zoukankan      html  css  js  c++  java
  • Python获取数字的二进制值

    目标

    想要获取一个整形数字的二进制表示

    bin 内置函数

    看一下官方的解释

    Convert an integer number to a binary string prefixed with “0b”. The result is a valid Python expression. If x is not a Python int object, it has to define an index() method that returns an integer. Some examples。

    >>> bin(3)
    '0b11'
    >>> bin(-10)
    '-0b1010'
    

    If prefix “0b” is desired or not, you can use either of the following ways.

    >>> format(14, '#b'), format(14, 'b')
    ('0b1110', '1110')
    >>> f'{14:#b}',f'{14:b}'
    ('0b1110', '1110')
    

    可以看到bin函数返回二进制数字表示的形式是采用了负号,而不是补码的形式。那么如何获得补码形式的二进制表示呢,很简单只需要对数值进行与操作就可以。

    >>> bin(-27 & 0b1111111111111111)
    '0b1111111111100101'
    

    这个例子手工指定了位数,也可以用下面带参数的形式

    def bindigits(n, bits):
        s = bin(n & int("1"*bits, 2))[2:]
        return ("{0:0>%s}" % (bits)).format(s)
    
    >>> print bindigits(-31337, 24)
    111111111000010110010111
    

    欢迎关注我的微信公众号

    参考资料:
    1、Python bin
    2、Two's Complement Binary in Python?
    3、integers

  • 相关阅读:
    CentOS 7 安装java 环境
    CentOS 7 替换网易yum 源
    九度:题目1553:时钟
    Maximum Subarray
    职场细节
    poj2524 Ubiquitous Religions
    九度 1526:朋友圈
    程序载入
    设备管理
    操作系统系列
  • 原文地址:https://www.cnblogs.com/cocowool/p/8037773.html
Copyright © 2011-2022 走看看