永发信息网

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

答案:3  悬赏:50  手机版
解决时间 2021-11-21 03:27
  • 提问者网友:谁的错
  • 2021-11-20 23:42
c语言。0按位取反是1还是-1,1按位取反是0吗?
最佳答案
  • 五星知识达人网友:笑迎怀羞
  • 2021-11-20 23:55
i为int类型 通常占4个字节
0的原码:0000 0000 0000 0000 0000 0000 0000 0000
取反: 1111 1111 1111 1111 1111 1111 1111 1111
最高位是1所以是负数,求其原始数据,方法是
再次取反加1(符号位不变)
取反:     1000 0000 0000 0000 0000 0000 0000 0000
加1          1000 0000 0000 0000 0000 0000 0000 0001
所以是 -1

Java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。
补码的规定如下:对正数来说,最高位为0,其余各位代表数值本身(以二进制表示),如+42的补码为00101010。对负数而言,把该数绝对值的补码按位取反,然后对整个数加1,即得该数的补码。如-42的补码为11010110(00101010按位取反11010101+1即11010110)用补码来表示数,0的补码是唯一的,都为00000000。(而在原码,反码表示中,+0和-0的表示是不唯一的,可参见相应的书籍)。而且可以用111111表示-1的补(这也是补码与原码和反码的区别)。
全部回答
  • 1楼网友:零点过十分
  • 2021-11-21 02:06
0按位取反是1,1按位取反是0追问为什么不选c追答在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。0的原码就是0000 0000,补码也是0000 0000 按位取反后就是补码就是
  • 2楼网友:旧脸谱
  • 2021-11-21 00:29
当然是0和1了。按位取反,“位”字都出来了,当然是二进制,二进制里面有-1吗?追问为什么选D不选C追答i是int型的0,二进制是32个0,按位取反是32个1也就是
0按位取反是1 1反过来是0追问为什么不选c
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯