美文网首页
Python 练习实例55

Python 练习实例55

作者: loinue | 来源:发表于2022-05-08 00:17 被阅读0次

    来自菜鸟教程
    https://www.runoob.com/python/python-exercise-example55.html

    题目:学习使用按位取反~。

    说明:

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

    按位取反:二进制每一位取反,0 变 1,1 变 0。

    最高位为符号位,正数的符号位为 0,负数为 1。

    对正数来说,最高位为 0,其余各位代表数值本身(以二进制表示),如 +42 的补码为 00101010。

    对负数而言,把该数绝对值的补码按位取反,然后对整个数加 1,即得该数的补码。如 -42 的补码为 11010110(00101010 按位取反
    11010101+1 即 11010110)。

    ~9 的计算步骤:

    转二进制:0 1001
    计算补码:0 1001
    按位取反:1 0110
    转为原码:

    按位取反:1 1001
    末位加 1:1 1010
    符号位为 1 是负数,即 -10
    实例

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    a = 7
    b = ~a
    
    c = -7
    d = ~c
    
    print ('变量 a 取反结果为: %d' % b)
    print ('变量 c 取反结果为: %d' % d)
    

    以上实例中输出结果为:

    变量 a 取反结果为: -8
    变量 c 取反结果为: 6

    说明:

    ~7,对 7 进行取反,7 的补码是 00000111 对补码取反得到 11111000,最高位 1 为符号位,表示负数,所以该补码对应的整数为 -8。

    ~-7 对 -7 进行取反,-7 的补码是 11111001 对补码取反得到 00000110,最高位 0 为符号位,表示正数,所以补码对应的整数为 6。

    相关文章

      网友评论

          本文标题:Python 练习实例55

          本文链接:https://www.haomeiwen.com/subject/guzmyrtx.html