将整数转换为二进制,然后在 python 中进行左移
Convert integer to binary and then do a left bit shift in python
我有一个来自文本文件的整数输入,我需要将其转换为二进制文件并向左移位 12 位。
所以,如果我的号码是 6。
二进制为110。
我的最终输出应该是 110000000000000,位移了 12 个位置。
我试过了:
i = 6
h = int(bin(i)[2:])<<12
但是,这给出了错误的输出。问题是 bin(i)
returns 一个字符串,所以我不得不将它转换成 int 但然后使用移位运算符移动整数而不是二进制。
我找到了一种方法。
h = int((bin(i<<12)[2:]), 2)
您可以在转换为二进制之前进行位移,因为位移不关心整数的基数(根据定义,位移是在 2 的基数上完成的)。
i = 6 << 12
answer = bin(i)[2:]
编辑:从
进行替代二进制转换
i = 6 << 12
answer = "{:b}".format(i)
额外的转化
为了好玩,这里有一些其他的数字移位方法:
i = 6 * (2**12) # This will convert into 6 * 2^12
answer = "{:b}".format(i)
位移位将使数字值加倍,因此通过将位移位乘以 2 的幂,我们可以达到同样的目的:
> print(6 << 12)
24576
> print(6 * 2**12)
24576
如果您知道只想将值加倍,通常使用位移位会更好。
您也可以将其转换为二进制,然后添加 13 个尾随零,这是一种实现相同功能的时髦方法:
i = 6 # Notice: No operation here this time
answer = "{:b}".format(i) + ('0' * 12)
可能不建议使用最后一种方法,但它说明了(左)位移位的工作原理。
我有一个来自文本文件的整数输入,我需要将其转换为二进制文件并向左移位 12 位。
所以,如果我的号码是 6。 二进制为110。 我的最终输出应该是 110000000000000,位移了 12 个位置。
我试过了:
i = 6
h = int(bin(i)[2:])<<12
但是,这给出了错误的输出。问题是 bin(i)
returns 一个字符串,所以我不得不将它转换成 int 但然后使用移位运算符移动整数而不是二进制。
我找到了一种方法。
h = int((bin(i<<12)[2:]), 2)
您可以在转换为二进制之前进行位移,因为位移不关心整数的基数(根据定义,位移是在 2 的基数上完成的)。
i = 6 << 12
answer = bin(i)[2:]
编辑:从
i = 6 << 12
answer = "{:b}".format(i)
额外的转化
为了好玩,这里有一些其他的数字移位方法:
i = 6 * (2**12) # This will convert into 6 * 2^12
answer = "{:b}".format(i)
位移位将使数字值加倍,因此通过将位移位乘以 2 的幂,我们可以达到同样的目的:
> print(6 << 12)
24576
> print(6 * 2**12)
24576
如果您知道只想将值加倍,通常使用位移位会更好。
您也可以将其转换为二进制,然后添加 13 个尾随零,这是一种实现相同功能的时髦方法:
i = 6 # Notice: No operation here this time
answer = "{:b}".format(i) + ('0' * 12)
可能不建议使用最后一种方法,但它说明了(左)位移位的工作原理。