2012-03-06 3 views
0

私は例えば をbitarray使用してプログラムを書いているを使用して係数:Pythonの:AND演算

bytePerInt = sys.getsizeof(1) 
class BitMap(object): 

    def __init__(self,bits): 
     self.bitsPerInt = 8*bytePerInt 
     size = bits/self.bitsPerInt+1 
     self.bitarray = [0]*size 

    #set the bit of pos as 1 
    def setBit(self,pos): 
     index = pos/self.bitsPerInt 
     shift = pos%self.bitsPerInt 
     operator = self.bitarray[index] 
     mask = 1<<shift 
     operator|=mask 
     self.bitarray[index] = operator 

私は、このようなNUM & 31の代わりにnum%32として、代わりに%の追加とモジュラスを取得したいです。 しかし、私のコンピュータではbytePerIntは24で、bitsPerIntは24 * 8 = 192であり、2の累乗ではありません。その結果、私は191でモジュラスを得ることができません。 ?

+0

intあたり24バイト?本気ですか? –

+0

あなたが興味があるかもしれない 'int.bit_length'メソッドがあります – warvariuc

+0

@danielkullmannはい、私がsys.getsizeof(1)を出力すると、結果は24です – remy

答えて

1

and the essential element in the array is Intの意味がわかりませんが、ブール値(1と0)のビット配列を作成する場合は、bitarrayを使用してください。

+0

ビット配列を実装する方法はありますか?ライブラリを使用しないでください? – remy

+0

@remyなぜあなたはそれを望みますか? –