C语言中位运算问题!急

来源:百度知道 编辑:UC知道 时间:2024/06/16 22:01:42
设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是多少?
3自己为什么前面会出来那么多的零?00000011 , 为什么不是 11 而是 00000011 .

x :10100111 ==> x+2 :10101001
3 :00000011 ==> ~3 :11111100
------------------------------------
x+2和~3取异或: 01010101
异或的意思就是相同的位等于0,不同的位等于1
所以答案就是1010101,即10进制的85

关于补充:因为一个char变量占1个字节,也就是8位,虽然3是二进制的11,如果要进行取异或计算的话,必须要补足8位才可以,所以3补足8位就是00000011

x :10100111 ==> x+2 :10101001
3 :00000011 ==> ~3 :11111100
------------------------------------
x+2和~3取异或: 01010101
所以答案就是 01010101,即10进制的85

~3的结果为11111100,2+x的结果为10101001
则,异或的结果为01010101.(异或规则同号为0,异号为1,即0^0为0,1^0为1,等等)

16位 机器吗?int是2位的还是4位的