~按位取反

~取反的步骤应该是:
一、先由一个数的原码推出它的补码(原码与反码相互转化时符号位不用取反)
二、对补码进行按位取反(包括符号位也取反),取反后的数就是新补码
三、这个新补码是计算机存储用的,所以用这个新补码反推出原码才是我们能读懂的二进制数字。

------------------------------------------------------------

例如:

~5 = -6 的计算步骤:

一、先由一个数的原码推出它的补码

5的原码 = 反码 = 补码:0000...0101    正数的原反补码相同

二、对补码进行按位取反,取反后的数就是新补码

取反操作:1111...1010    按位取反的操作对象是补码,且符号位也会取反,取反后会变成新补码

三、补码是内存存储用的,所以用这个新补码反推出其原码才是我们能读懂的二进制数字。

补码:1111...1010

反码:1111...1001

原码:1000...0110      -----> -6

------------------------------------------------------------

再例如:

~(-3) = 2 的计算步骤:

-3的原码:1000...0011

-3的反码:1111...1100    原码转化为反码时,符号位不用取反

-3的补码:1111...1101   内存中存的是补码

取反操作:0000...0010    ------>    对3的补码取反得到新补码

由新补码的符号位可以看出,该数字是个正数,故其原反补码相同

所以,新补码 = 反码 = 原码:0000...0010      -----> 2

------------------------------------------------------------

快速求按位取反~:

原数字(正数)加一后再加负号
~1 = -2  
~2 = -3
~3 = -4
~6 = -7
~9 = -10

原数字(负数)加一后再加负号
~(-1) = 0
~(-2) = 1
~(-3) = 2
~(-6) = 5
~(-9) = 8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值