当前位置:新励学网 > 秒知问答 > c语言。0按位取反是1还是-1,1按位取反是0吗

c语言。0按位取反是1还是-1,1按位取反是0吗

发表时间:2024-07-14 23:04:46 来源:网友投稿

i为int类型通常占4个字节0的原码:00000000000000000000000000000000取反:11111111111111111111111111111111最高位是1所以是负数,求其原始数据,方法是再次取反加1(符号位不变)取反:10000000000000000000000000000000加110000000000000000000000000000001所以是-1

Java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。

补码的规定如下:对正数来说最高位为0,其余各位代表数值本身(以二进制表示),如+42的补码为00101010。对负数而言把该数绝对值的补码按位取反,然后对整个数加1,即得该数的补码。如-42的补码为11010110(00101010按位取反11010101+1即11010110)用补码来表示数,0的补码是唯一的,都为00000000。(而在原码,反码表示中,+0和-0的表示是不唯一的,可参见相应的书籍)。而且可以用111111表示-1的补(这也是补码与原码和反码的区别)。

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!