在c中,我知道无符号字符是有尺寸的1 个字节(= 1 个八位字节 = 8 位),并且我知道 unsigned char 实际上是 0 到 255 之间的整数值,现在如果我有以下 unsigned char 变量:
unsigned char c = 255; //(this value can be any value from 0 to 255)
如何获得包含 8 个元素的表,指示该变量的每个位值(0 或 1)? (像这样:{1, 1, 1, 1, 1, 1, 1, 1})有没有简单的方法可以在c中做到这一点?
在 C 中提取位的常见方法是使用位移操作:
int bits[8];
for (int i = 0 ; i != 8 ; i++) {
bits[i] = (c & (1 << i)) != 0;
}
1 << i
produces binary numbers with 1
set in i
-th position, i.e. 12, 102, 1002, 10002, and so on.
操作员&
uses 1 << i
作为“掩码”,选择一个位c
标记为1
在掩码的值中。比较!= 0
完成作业,根据位的值产生零或一。
另一种方法正在转变c
到右边,并用1
, 像这样:
int bits[8];
for (int i = 0 ; i != 8 ; i++) {
bits[i] = (c >> i) & 1;
}
这与第一种方法类似,但屏蔽是在最低有效位位置完成的。
Note:在计算机上CHAR_BIT
设置为 8 以外的数字时,将仅提取低 8 位。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)