C语言 左移位的问题,求大神,帮忙解释一下!!!

2024-11-05 22:01:47
推荐回答(3个)
回答1:

aa=0001`0010(2).
aa<<3=000`1001`0000=90(10)(就是在后面填3个0,结果和输出一样)
aa<<4=0001`0010`0000=120(10)(也和输出一样)
楼上好像都不对

回答2:

aa==0x12(0x表示十六进制,十六进制12,十进制是16+2==18),二进制0001 0010

左移3位,二进制1001 0000,十六进制0x90,十进制144。
左移4位,二进制0001 0010 0000,十六进制0x120,十进制288。
你确定是printf("%d\n",aa<<3);吗?可能是这个吧:printf("%x",aa<<3);,%x表示十六进制输出。

回答3:

你说的也不对
aa为18
aa<<3,相当于乘8,显示144.
aa<<4,相当于乘16,显示288
我用C++BUILDER6 试过了。