Python 练习实例55

[复制链接]
4912|0
 楼主| cooldog123pp 发表于 2021-7-31 22:00 | 显示全部楼层 |阅读模式
题目:学习使用按位取反~。
说明:
二进制数在内存中以补码的形式存储。
按位取反:二进制每一位取反,0 变 1,1 变 0。
最高位为符号位,正数的符号位为 0,负数为 1。
对正数来说,最高位为 0,其余各位代表数值本身(以二进制表示),如 +42 的补码为 00101010。
对负数而言,把该数绝对值的补码按位取反,然后对整个数加 1,即得该数的补码。如 -42 的补码为 11010110(00101010 按位取反
11010101+1 即 11010110)。
~9 的计算步骤:
  1. 转二进制:0 1001
  2. 计算补码:0 1001
  3. 按位取反:1 0110
转为原码:
  1. 按位取反:1 1001  
  2. 末位加 1:1 1010
  3. 符号位为 1 是负数,即 -10
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-

  3. a = 7
  4. b = ~a

  5. c = -7
  6. d = ~c

  7. print ('变量 a 取反结果为: %d' % b)
  8. print ('变量 c 取反结果为: %d' % d)
以上实例中输出结果为:
  1. 变量 a 取反结果为: -8
  2. 变量 c 取反结果为: 6


您需要登录后才可以回帖 登录 | 注册

本版积分规则

2304

主题

7626

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部