C语言移位运算

UINT8 a=1;UINT16 b=2;UINT32 c; c = (a <<16)|b;请问 c 等于多少?
2024-12-05 06:28:06
推荐回答(4个)
回答1:

结果为c = a的16次方 + 2啊!结果为:65538
(a <<16)|b;
为a的16次方与b按位或,由于a以为后低位补零所以与2或加上2就行了!

回答2:

都转化为16进制类型(或者2进制类型)
a= 0x00000001
b= 0x00000002
c的值就是先对a左移16位,再与b按位与。
c= 0x00008002

回答3:

依赖与机器是大端还是小端:
小端情况下:pow(2, 16) + 2 即 0xffff + 3 即65538

回答4:

65536+2 = 65538 二进制就是1000000000000010