26 lines
No EOL
727 B
Python
Executable file
26 lines
No EOL
727 B
Python
Executable file
# -*- coding: utf-8 -*-
|
|
class bf(object):
|
|
def __init__(self,value=0):
|
|
self._d = value
|
|
|
|
def __getitem__(self, index):
|
|
return (self._d >> index) & 1
|
|
|
|
def __setitem__(self,index,value):
|
|
value = (value&1L)<<index
|
|
mask = (1L)<<index
|
|
self._d = (self._d & ~mask) | value
|
|
|
|
def __getslice__(self, start, end):
|
|
mask = 2L**(end - start) -1
|
|
return (self._d >> start) & mask
|
|
|
|
def __setslice__(self, start, end, value):
|
|
mask = 2L**(end - start) -1
|
|
value = (value & mask) << start
|
|
mask = mask << start
|
|
self._d = (self._d & ~mask) | value
|
|
return (self._d >> start) & mask
|
|
|
|
def __int__(self):
|
|
return self._d |