| 这样不怎么实用,还不于用1移位实现得快 |
hclin 发表于 2024-9-28 16:53 用 enum 来做,C语言的新手比较容易理解,尽管要遍历256 个 8 位无符号整数,源文件大了一点,但并不会导致HEX文件的虚胖,浪费MPU 非常有限的存储空间。对于那些学习C/C++ 达到 sophomore 等级的同学,也许可以推荐更高级的宏定义,例如: #define L2B(n) \ (\ ((n >> 21) & 0x80) | \ ((n >> 18) & 0x40) | \ ((n >> 15) & 0x20) | \ ((n >> 12) & 0x10) | \ ((n >> 9) & 0x08) | \ ((n >> 6) & 0x04) | \ ((n >> 3) & 0x02) | \ ((n ) & 0x01) \ ) #define b(n) L2B(0x##n##l) 之后,你就可以用 b(10010010010) 这样的格式输入 2 进制常数了。 根据 16/32/64 位的长短,自行修改上面的宏定义。。。。新版C++ 编译器已经直接支持2 进制常数,或者自己写一个 2 进制数据类型的 Class 也可以。希望这些注解能帮到 正在学习 C/C++ 的同学。 |
| 天啊~用 enum 來實現。在16bit,32bit的情況下,是會要人命的。 |