
c语言为逻辑运算(位非)
设a为0111,a,b为无符号整形变量,则b=~a结果a不变,b为0177666.b结果是怎么算出来的?...
设a为0111,a,b为无符号整形变量,则b=~a 结果a不变,b为0177666.
b结果是怎么算出来的? 展开
b结果是怎么算出来的? 展开
1个回答
展开全部
首先你要知道
a = 0111
, 那么a到底是多少呢? 【这里你应该知道八进制,16进制,十进制等。不详述】
a = 0111 = 73 = 0x49
其次 a 为无符号整数,我们应该知道a存储格式为(假设无符号整数位16位,事实上目前大部分机器都是32位的 unsigned int)
0000 0000 0100 1001
因此 ~a应该是 【注意 ~a并不改变a本身的值】
1111 1111 1011 0110
写成16进制是
0xFFB6
。
因此
b = ~a =0xFFB6 = 65462= 0177666
也就是
b = 0177666
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询