前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python获取数字的二进制值

Python获取数字的二进制值

作者头像
大江小浪
发布2018-07-24 16:57:18
7730
发布2018-07-24 16:57:18
举报
文章被收录于专栏:小狼的世界小狼的世界

目标

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

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。

代码语言:javascript
复制
>>> bin(3)
'0b11'
>>> bin(-10)
'-0b1010'

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

代码语言:javascript
复制
>>> format(14, '#b'), format(14, 'b')
('0b1110', '1110')
>>> f'{14:#b}',f'{14:b}'
('0b1110', '1110')

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

代码语言:javascript
复制
>>> bin(-27 & 0b1111111111111111)
'0b1111111111100101'

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

代码语言:javascript
复制
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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-12-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目标
  • bin 内置函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档