c语言为逻辑运算(位非)

设a为0111,a,b为无符号整形变量,则b=~a结果a不变,b为0177666.b结果是怎么算出来的?... 设a为0111,a,b为无符号整形变量,则b=~a 结果a不变,b为0177666.
b结果是怎么算出来的?
展开
 我来答
itunes0004
2018-05-03 · TA获得超过4046个赞
知道大有可为答主
回答量:2685
采纳率:69%
帮助的人:624万
展开全部

首先你要知道

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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式