(1 <27)的十六进制值是多少?

时间:2016-03-06 06:55:32

标签: c++ c bit-shift

刚刚开始了一个几乎没有背景知识的嵌入式系统课程。有人可以解释我将如何回答这个问题吗?看起来很简单,我还无法访问我的演讲幻灯片。

3 个答案:

答案 0 :(得分:7)

没有任何编程......

1&lt;&lt; 27是二进制的,1是1,后跟27个零:

1000000000000000000000000000

要转换为十六进制,首先将值分组为4位组,如果需要,在左侧填充额外的零:

1000 0000 0000 0000 0000 0000 0000

将每组4位转换为相应的十六进制等效值。

   8    0    0    0    0    0    0

或者,没有空格,以及传统的'0x'前缀:

为0x8000000

答案 1 :(得分:3)

试一试:

int main() {
    long l = (1 << 27);
    printf ("%x\n", l);

    return 0;
}

输出btw为8000000

答案 2 :(得分:2)

需要表示1的位模式具有全零位,但最后一位。表达式1 << 27的计算结果为最后一位移动了27位,右边用零填充。

您可以逐步达到该值:

 1     :  00000001
 1 << 7:  10000000  (0x80)
 1 << 15: 10000000 00000000   (0x8000)
 1 << 23: 10000000 00000000 00000000  (0x800000)
 1 << 27: 00001000 00000000 00000000 00000000  (0x08000000)