C/C++中,非运算~10的结果为0101,为什么编译的结果为-11?
C/C++中,非运算~10的结果为0101,为什么编译的结果为-11?
日期:2021-04-07 00:14:51 人气:1
假设你的编译系统对于int类型定义了2个字节,那么10用二进制表示就是 000000000000(前面12个0)1010 那么取反后~10就是 111111111111(12个1)0101 , %d格式符打印的是有符号整数,而这个取反后的数是一个负数的补码形式(最高位符号位是1,表示负数),用补码的知识可以算出它代表-11
.负数补码计算方式:例如求-11的补码,先求其绝对值为11,再写出11的二进制形式(假如是nt型占两个字节)为000000000000(12个0)1011,再对这个二进制
.负数补码计算方式:例如求-11的补码,先求其绝对值为11,再写出11的二进制形式(假如是nt型占两个字节)为000000000000(12个0)1011,再对这个二进制