关于C语言的基础问题。(位运算、补码)

2024-11-29 14:28:15
推荐回答(1个)
回答1:

补码是现在最常用的一种数据编码方式,对于无符号数,补码和其值是一样的,而对于有符号数有点区别。
补码表示有符号数时,第一位表示正负号,1为-,0为+,所以i是0xFFFFFF,全部为1,则i为负数,当其为负数时,值的求法是去掉符号位,剩下的取反+1,那么就是0+1=1,所以i的值是-1

要理解为什么不同应该先去看一下补码的编码规则,而不是看二进制的运算

进制之间的转换可以看看http://hi.baidu.com/cs123/blog/item/20322e2ec19965534ec226ec.html,这篇文章讲得非常详细