Skip to content

Instantly share code, notes, and snippets.

@DivinityArcane
Last active December 10, 2015 11:09
Show Gist options
  • Save DivinityArcane/4425718 to your computer and use it in GitHub Desktop.
Save DivinityArcane/4425718 to your computer and use it in GitHub Desktop.
Because why not.
_hex = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5,
'6':6, '7':7, '8':8, '9':9, 'A':10, 'B':11,
'C':12, 'D':13, 'E':14, 'F':15}
def bit(n1, n2):
if str(n1).upper() not in _hex:
raise ValueError('Invalid n1')
elif str(n2).upper() not in _hex:
raise ValueError('Invalid n2')
A = _hex[str(n1).upper()]
B = _hex[str(n2).upper()]
return ((16 * A) % 241) + (1 * B) % 16
def adder(A, B, C = 0):
F1 = bit(A[0], A[1])
F2 = bit(B[0], B[1])
return ((F1 + F2) % 256) + C
def _16bit_unsigned(b1, b2):
if not isinstance(b1, list):
raise ValueError('Invalid b1')
elif not isinstance(b2, list):
raise ValueError('Invalid b2')
A = bit(b1[0], b1[1]) + 1
B = bit(b2[0], b2[1]) + 1
C = (A * B) - 1
return C % (256 ** 2)
def _32bit_unsigned(b1, b2, b3, b4):
if not isinstance(b1, list):
raise ValueError('Invalid b1')
elif not isinstance(b2, list):
raise ValueError('Invalid b2')
elif not isinstance(b3, list):
raise ValueError('Invalid b3')
elif not isinstance(b4, list):
raise ValueError('Invalid b4')
A = bit(b1[0], b1[1]) + 1
B = bit(b2[0], b2[1]) + 1
C = bit(b3[0], b3[1]) + 1
D = bit(b4[0], b4[1]) + 1
E = (A * B * C * D) - 1
return E % (256 ** 4)
def _64bit_unsigned(b1, b2, b3, b4, b5, b6, b7, b8):
if not isinstance(b1, list):
raise ValueError('Invalid b1')
elif not isinstance(b2, list):
raise ValueError('Invalid b2')
elif not isinstance(b3, list):
raise ValueError('Invalid b3')
elif not isinstance(b4, list):
raise ValueError('Invalid b4')
elif not isinstance(b5, list):
raise ValueError('Invalid b5')
elif not isinstance(b6, list):
raise ValueError('Invalid b6')
elif not isinstance(b7, list):
raise ValueError('Invalid b7')
elif not isinstance(b8, list):
raise ValueError('Invalid b8')
A = bit(b1[0], b1[1]) + 1
B = bit(b2[0], b2[1]) + 1
C = bit(b3[0], b3[1]) + 1
D = bit(b4[0], b4[1]) + 1
E = bit(b5[0], b5[1]) + 1
F = bit(b6[0], b6[1]) + 1
G = bit(b7[0], b7[1]) + 1
H = bit(b8[0], b8[1]) + 1
I = (A * B * C * D * E * F * G * H) - 1
return I % (256 ** 8)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment