You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
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()
|