【问题标题】:Why can 4 bits store values in the range 0-15?为什么 4 位可以存储 0-15 范围内的值?
【发布时间】:2014-04-29 06:28:08
【问题描述】:
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 的值。有人可以帮帮我吗?

【问题讨论】:

标签: c bit


【解决方案1】:

认为 2 是 4 的幂 = 16 个可能的值... 二进制值表示 0..2^x 范围内的十进制数 - 其中 X=位数

【讨论】:

    【解决方案2】:

    因为 1+2+4+8 = 15,所以 4 位二进制数的范围可以从 0 到 15。数字是:

    0000b =  0d
    0001b =  1d
    0010b =  2d
    0011b =  3d
    ...
    1110b = 14d
    1111b = 15d
    

    【讨论】:

      【解决方案3】:

      因为只有 16 的独特组合(感谢 Udo)0,1 可以用 4 位表示

       0000  0
       0001  1 
       0010  2 
       0011  3
      .........
       1111  15
      

      【讨论】:

      • 这些不是排列而是组合。
      • @UdoKlein 绝对,已修复
      【解决方案4】:

      因为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

      【讨论】:

        猜你喜欢
        • 2019-05-18
        • 1970-01-01
        • 1970-01-01
        • 2020-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        相关资源
        最近更新 更多