Python中按位取反运算符(~)在计算机中的计算过程

1. 原码、反码、补码三者之间的关系

计算机中的数值是以二进制码的方式存储的,而且是以补码的方式存储的,数值的运算也是以补码的形式进行运算。我们通常看到的数值一般是十进制数,可以简单地理解为计算机将补码转换成原码,然后再将原码转换成十进制显示出来。

原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。

        正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反

        正数的补码就是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

正数:[+1] = [00000001]原 = [00000001]反 = [00000001]补

负数:

[-1]原 = 10000001

[-1]反 = 11111110

[-1]补 = 11111111

2. Python中按位取反(~)运算符的计算过程

计算机中的数值是以补码存储的

① Python中对正数按位取反:~1 = -2

[+1]原 = [+1]反 = [+1]补 = 0 0001

计算机中存储的时 0 0001,是正数1

按位取反:1 1110

1 1110的反码: [1 1110]反 = [1 0001]

末位加一:1 0010,即为-2

 

② Python中对负数按位取反:~-2 = 1

[-2]原 = 1 0010

[-2]反 = 1 1101

[-2]补 = 1 1110

计算机中存储的是 1 1110,是负数 -14

按位取反:0 0001

正数的反码和补码相同,即为1

总结,简单的记忆方法:~a = - (a + 1)

 

 

  • 10
    点赞
  • 29
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:撸撸猫 设计师:马嘣嘣 返回首页
评论

打赏作者

谦虚使人发胖

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值