为什么4位可以存储0-15范围内的值?

时间:2014-04-29 06:28:09

标签: c bit

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的值。任何人都可以帮助我吗?

4 个答案:

答案 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