struct bitCard {
unsigned int face : 4;
unsigned int suit : 2;
unsigned int color : 1;
};
"前面的结构定义表明成员面部以4位存储, 成员套装以2位存储,成员颜色以1位存储。位数基于每个结构构件的期望值范围。 会员专卖店 从0(Ace)到12(King)-4位的值可以存储0-15范围内的值。" (C如何编程)。 粗体的句子让我感到困惑,因为我无法理解为什么4位可以存储从0到15的值。任何人都可以帮助我吗?
答案 0 :(得分:2)
认为2的力量为4 = 16个可能的值... 二进制值表示范围0..2 ^ x中的十进制数 - 其中X =位数
答案 1 :(得分:1)
因为15 = 1 * 2^3 + 1 * 2^2 + 1 * 2^1 + 1*2^0
即:15 = 0xF = 1111b
^
是权力操作。
或者,更详细:
0000 = 0
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9
1010 = 10
1011 = 11
1100 = 12
1101 = 13
1110 = 14
1111 = 15
我真的可以推荐阅读有关二进制数的维基百科文章:http://en.wikipedia.org/wiki/Binary_number
答案 2 :(得分:1)
因为1 + 2 + 4 + 8 = 15,所以4位二进制数的范围是0到15.数字是:
0000b = 0d
0001b = 1d
0010b = 2d
0011b = 3d
...
1110b = 14d
1111b = 15d
答案 3 :(得分:1)
因为16
只有0
个唯一组合(感谢Udo),1
可以用4位表示
0000 0
0001 1
0010 2
0011 3
.........
1111 15