永发信息网

c语言中的位运算符中‘按位取反’是怎么运算的,什么是负数的反码,请各位帮我解释一下!!!

答案:3  悬赏:40  手机版
解决时间 2021-04-01 08:52
  • 提问者网友:niaiwoma
  • 2021-03-31 11:31
c语言中的位运算符中‘按位取反’是怎么运算的,什么是负数的反码,请各位帮我解释一下!!!
最佳答案
  • 五星知识达人网友:十鸦
  • 2021-03-31 12:48
0001
取反
1110

符号位为1,取反+1为
1010
转化成10进制为
-2

正数的原码,补码,反码都相同,都等于它本身
负数的补码是:符号位为1,其余各位求反,末位加1
反码是:符号位为1,其余各位求反,但末位不加1
也就是说,反码末位加上1就是补码

1100110011 原
1011001100 反 除符号位,按位取反
1011001101 补 除符号位,按位取反再加1

正数的原反补是一样的

在计算机中,数据是以补码的形式存储的:

在n位的机器数中,最高位为符号位,该位为零表示为正,为1表示为负;

其余n-1位为数值位,各位的值可为0或1。

当真值为正时:原码、反码、补码数值位完全相同;

当真值为负时:

原码的数值位保持原样,

反码的数值位是原码数值位的各位取反,

补码则是反码的最低位加一。

注意符号位不变。

如:若机器数是16位:

十进制数 17 的原码、反码与补码均为: 0000000000010001

十进制数-17 的原码、反码与补码分别为:1000000000010001、1111111111101110、1111111111101111
全部回答
  • 1楼网友:duile
  • 2021-03-31 15:49
按位取反运算符~为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。例如~9的运算为: ~(0000000000001001)结果为:简单的说: 1变成0 0变成1
  • 2楼网友:像个废品
  • 2021-03-31 14:17
按位取反就是所有位取反。
写出来就是:
a = ~a;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯