B
This commit is contained in:
parent
e5e8880e41
commit
518da4a923
1019 changed files with 15877 additions and 0 deletions
7
Task/Bitwise-operations/Python/bitwise-operations-1.py
Normal file
7
Task/Bitwise-operations/Python/bitwise-operations-1.py
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
def bitwise(a, b):
|
||||
print 'a and b:', a & b
|
||||
print 'a or b:', a | b
|
||||
print 'a xor b:', a ^ b
|
||||
print 'not a:', ~a
|
||||
print 'a << b:', a << b # left shift
|
||||
print 'a >> b:', a >> b # arithmetic right shift
|
||||
8
Task/Bitwise-operations/Python/bitwise-operations-2.py
Normal file
8
Task/Bitwise-operations/Python/bitwise-operations-2.py
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# 8-bit bounded shift:
|
||||
x = x << n & 0xff
|
||||
# ditto for 16 bit:
|
||||
x = x << n & 0xffff
|
||||
# ... and 32-bit:
|
||||
x = x << n & 0xffffffff
|
||||
# ... and 64-bit:
|
||||
x = x << n & 0xffffffffffffffff
|
||||
41
Task/Bitwise-operations/Python/bitwise-operations-3.py
Normal file
41
Task/Bitwise-operations/Python/bitwise-operations-3.py
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
def bitstr(n, width=None):
|
||||
"""return the binary representation of n as a string and
|
||||
optionally zero-fill (pad) it to a given length
|
||||
"""
|
||||
result = list()
|
||||
while n:
|
||||
result.append(str(n%2))
|
||||
n = int(n/2)
|
||||
if (width is not None) and len(result) < width:
|
||||
result.extend(['0'] * (width - len(result)))
|
||||
result.reverse()
|
||||
return ''.join(result)
|
||||
|
||||
def mask(n):
|
||||
"""Return a bitmask of length n (suitable for masking against an
|
||||
int to coerce the size to a given length)
|
||||
"""
|
||||
if n >= 0:
|
||||
return 2**n - 1
|
||||
else:
|
||||
return 0
|
||||
|
||||
def rol(n, rotations=1, width=8):
|
||||
"""Return a given number of bitwise left rotations of an integer n,
|
||||
for a given bit field width.
|
||||
"""
|
||||
rotations %= width
|
||||
if rotations < 1:
|
||||
return n
|
||||
n &= mask(width) ## Should it be an error to truncate here?
|
||||
return ((n << rotations) & mask(width)) | (n >> (width - rotations))
|
||||
|
||||
def ror(n, rotations=1, width=8):
|
||||
"""Return a given number of bitwise right rotations of an integer n,
|
||||
for a given bit field width.
|
||||
"""
|
||||
rotations %= width
|
||||
if rotations < 1:
|
||||
return n
|
||||
n &= mask(width)
|
||||
return (n >> rotations) | ((n << (width - rotations)) & mask(width))
|
||||
Loading…
Add table
Add a link
Reference in a new issue