刚刚开始了一个几乎没有背景知识的嵌入式系统课程。有人可以解释我将如何回答这个问题吗?看起来很简单,我还无法访问我的演讲幻灯片。
答案 0 :(得分:7)
没有任何编程......
1<< 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)