Browse Source

I think I might have to reinvent the wheel...

master
Raphael Roberts 6 years ago
commit
60bf340896
  1. 2
      .gitignore
  2. 37
      work.py

2
.gitignore

@ -0,0 +1,2 @@
.dir-locals.el

37
work.py

@ -0,0 +1,37 @@
class nBit:
def __init__(self, bitlength):
self.bitlength = bitlength
self.registers = {"a": 0}
self.carry_status = 0
def create_register(self, name):
self.registers[name] = 0
def set_register(self, name, v):
self.check(v)
self.registers[name] = v
def get_register(self, name):
return self.registers[name]
def check(self, n):
if n.bitlength > self.bitlength:
raise OverflowError
def maybe_carry(self):
if self.registers["a"].bit_length() > self.bitlength:
self.registers["a"] &= 1 << self.bitlength - 1
self.carry_status
def add(self, v):
self.registers["a"] += v
self.maybe_carry()
def shift_right(self):
self.registers["a"] >>= 1
if self.carry_status == 1:
self.registers["a"] &= 1 << self.carry_status
def shift_left(self):
self.registers["a"] <<= 1
self.maybe_carry()
Loading…
Cancel
Save