0取反是1,0代表正数,1代表负数,所以结果是-1。
按位取反是指按照"二进制位"0 的二进制为 0000 0000 0000 0000 取反以后得到 1111 1111 1111 1111 这个是-1的补码
按位取反,0就是 32个0bit(针对int类型), 取反后是32个1bit即16进制的0xffff_ffff ,而-1==0xffff_ffff,所以0取反就是-1。。。怎么算出来很简单, 计算机中数据是补码形式存储, -1对应的补码是1取反+1, 1取反==0xffff_fffe, 那么再+1就是 0xffff_ffff。。。
最高位是1所以是负数,求其原始数据,方法是 再次取反加1(符号位不变)取反: 1000 0000 0000 0000 0000 0000 0000 0000 加1 1000 0000 0000 0000 0000 0000 0000 0001 所以是 -1
左边补0还是1是implementation defined,不过就算从算数角度说,0取反右移也是1啊:
字面量 0 的类型为 int,取反後全部位为 1,作为有符号整数是 -1,算术右移后也不变。如果用字...
按位取反就是0变1,1变0,比如0,按字节在内存中二进制为00000000,取反后为11111111,这个值是-1的补码,当然要是无符号的话值为2551内存中为00000001,取反后为11111110,有符号为-2,无符号为254 查看原帖>> 记得采纳啊
而且为了方便数值比较大小,甚至引入移码【就是在补码的基础上,符号位取反而已】。那么问题来了,为什么不一开始就规定1为正 只看楼主收藏回复 瓜保熟- 计算机中有符号数为什么规定0为正,1为负?而且为了方便数值比较大小,甚至引入移码【就是在补码的基础上,符号位取反而已】。那么问题来了,为什么不一开始就规定1...
求补码可以保留右边第一个1以及右边的0其他取反,这是根据原码、反码、补码相互的关系总结出来的规律。只要记住,熟练使用即可。
零是怎么来的,0包括+0和-0,在原码和反码中根据其计算公式,有两种形式,而对于补码来说+0,真值为0,000000和-0,其真值为1,0000000补码:一个数如果为正,则它的原码、反码、补码相同;一个数如果为负,则符号位为1,其余各位是对原码取反,然后整个数加1.为了简单起见,我们用1个字节来表示一个整数:问题:0的...