簡體   English   中英

將整數轉換為二進制,然后在python中進行左移位

[英]Convert integer to binary and then do a left bit shift in python

我有一個來自文本文件的整數輸入,我需要將其轉換為二進制並進行左移位12位。

所以,如果我的數字是6.二進制是110。 我的最終輸出應該是1100億,位移了12位。

我試過了:

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

但是,這會產生錯誤的輸出。 問題是bin(i)返回一個字符串,所以我不得不將它轉換為int但是然后使用shift運算符移動整數而不是二進制。

您可以在轉換為二進制之前進行位移,因為位移不關心整數的基數(根據定義,位移是在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)

位移將使數值加倍,因此通過將位移與功率二相乘,我們可以實現相同的目標:

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

如果您知道只想將值加倍,那么使用位移通常會更好。

您還可以將其轉換為二進制,然后添加13個尾隨零,這是一種實現相同功能的時髦方式:

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

也許不建議使用最后一種方法,但它說明了(左)位移的工作原理。

我找到了辦法。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM