计算机按位取反

概念

*二进制数在内存中以补码的形式存储。

~是按位取反运算

可以通过原码、反码和补码三者的含义及关系来介绍三者之间的换算关系:
1、原码
原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。
比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符号位。
2、反码
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
第一位是符号位。
3、补码
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
第一位是符号位。
注:补码的补码等于原码,如:-1的补码为11111111,则11111111的反码为10000000
补码为10000001(-1的原码)。


实例

~1=-2

步骤一:1的二进制码
0000 0001
步骤二:1的补码
0000 0001
步骤三:按位取反
1111 1110
步骤四:求其原码(负数的补码求其原码 是-1取反)
补码-1为
1111 1101
然后取反
1000 0010 为-2


~2 =1

步骤一:2的二进制原码
1000 0010
步骤二:2的补码(负数补码为取反+1)
取反
1111 1101
先+1
1111 1110
步骤三:按位取反(正数的补码还是其本身 ,补码->本身 不变)
0000 0001
其原码
0000 0001(为1)


实际运算举例
~5

简单:加1符号位变 变-6

~-5
简单:负数就是加1 符号位变 4

总结

在按位取反的过程中
注意计算机存储的是每个数的补码,所以先求其补码,然后全部位按位取反 再求其原码
再求其原码注意现在是正数还是负数

正数的反码是其本身
正数的补码是其本身
负数的反码是除符号位其他全部按位取反
负数的补码是反码+1

最后总结 求补码,按位取反,求原码为结果
最后总结 求补码,按位取反,求原码为结果
最后总结 求补码,按位取反,求原码为结果

新总结

符号位(变化) +其他全部变化

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值