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

标签 python int hex bit-shift bin

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

那么,如果我的号码是 6。 二进制为110。 我的最终输出应该是 110000000000000,位移了 12 位。

我试过:

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

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

最佳答案

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

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

编辑:从@guidot 进行替代二进制转换

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)

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

关于python - 将整数转换为二进制,然后在 python 中进行左移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52605786/

相关文章:

python - 如何将子进程对象传递给数组

Python函数组合

c - 如何打印 short int C 对象的字节表示

java - 如何使用 Java 将十六进制的 String 数组转换为 int 数组?

将十进制转换为十六进制时一次仅考虑 4 位

emacs - 能不能让emacs有类似010编辑器文件格式分析的功能?

将嵌套列表操作为嵌套分块列表的 Pythonic 方法

python - 如何为 python 安装 OpenCV

python - 继承 int 并覆盖 __init__ 方法 - Python

C++ : int _b(di*3) convert to C