将整数转换为二进制,然后在python中进行左移

时间:2018-10-02 09:39:22

标签: python int hex bit-shift bin

我有一个来自文本文件的整数输入,需要将其转换为二进制并左移12位。

所以,如果我的电话是6。 二进制为110。 我的最终输出应该是110000000000000,位移了12位。

我尝试过:

i = 6
h = int(bin(i)[2:])<<12

但是,这给出了错误的输出。问题是bin(i)返回一个字符串,因此我不得不将其转换为int,但随后使用shift运算符将整数而不是二进制数移位。

2 个答案:

答案 0 :(得分:5)

您可以在转换为二进制之前进行位移,因为位移并不关心整数的基数(根据定义,位移以2的基数为单位)。

i = 6 << 12
answer = "{:b}".format(i)

编辑:来自@guidot

的替代二进制转换
i = 6 * (2**12) # This will convert into 6 * 2^12
answer = "{:b}".format(i)

其他转化

仅仅是为了好玩,这里还有一些其他方法来对数字进行移位:

> print(6 << 12)
24576
> print(6 * 2**12)
24576

移位会使数字值加倍,因此通过将移位乘以2的幂可以得到相同的结果:

i = 6 # Notice: No operation here this time
answer = "{:b}".format(i) + ('0' * 12)

如果您只想将值加倍,通常最好使用位移。

您还可以将其转换为二进制,然后添加13个尾随零,这是实现相同功能的一种时髦方式:

{{1}}

也许不建议使用最后一种方法,但是它说明了(左)移位的工作原理。

答案 1 :(得分:-1)

我找到了一种方法。

h = int((bin(i << 12)[2:]),2)