[英]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.