2017-08-09 68 views
2

我想知道如何將下面的Java代碼實現到它的Python等價物中。通過清除python比特索引0

在Java中,我採取了許多,並通過與第0指數使用逐運營商清理一些指數位(含)

int clearBitsIthrough0(int num, int i) { 
    int mask = (-1 << (i + 1)); 
    return num & mask; 
} 

我在相當於Python代碼嘗試低於

def clearBitsIThrough0(num, i): 
    mask = format(0xf << 4, 'b') 
    return num & mask 

不過,我得到一個

TypeError: unsupported operand type(s) for &: 'int' and 'str'

我知道這是因爲面膜是在這裏,但如果我把它轉換爲int,我失去​​了底層的整數值,我仍然得到錯誤的結果。

我嘗試了不同的方式做以下

def clearBitsIThrough0(num, i): 
    mask = int(format(0xf << 4, 'b'), 2) 
    num = int(format(num, 'b'), 2) 
    print(num, mask) 
    return num & mask 

但這返回0,這是錯誤的答案。

我該怎麼做?

回答

2

相同的代碼工作在Python:

def clearBitsIThrough0(num, i): 
    mask = (-1 << (i + 1)) 
    return num & mask 
+0

就嘗試過自己。我只是愚蠢的不去嘗試。我沒有嘗試它,因爲我認爲自從-1在Python中沒有被表示爲1111(它在Java中),這是行不通的。我是否應該刪除這個問題,因爲它似乎沒有達到任何目的? –

+0

顯示高級Python也可以讓你做低級別的東西有價值! –