Python: модуль с использованием anding - PullRequest
0 голосов
/ 06 марта 2012

Я пишу программу с использованием bitarray например:

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, чтобы получить модуль, так что я могу сделать?

1 Ответ

1 голос
/ 06 марта 2012

Как и другие, я не уверен, что вы подразумеваете под and the essential element in the array is Int, но если вы создаете битовый массив логических значений (1 и 0), используйте bitarray .

...