def dec_to_bcd_excess3(num, bias=3): """Converts a binary to Binary Coded Decimal, then converts again to excess-3 BCD, which has a 'bit bias' of `bias`, where bits are shifted by the given bias. See wikipedia.org/wiki/Excess-3 for more.""" bcd, binary, decimals = '', '', '' for digit in str(num): binval = encoders.dec_to_bin(int(digit)) binval = BaseDataType.add(str(binval), bias) binary += '{}{}'.format(binval, ' ' * (4 - len(binval) + 1)) if len(binval) < 4: binval = binval.zfill(4) bcd += '{} '.format(binval) decimals += digit + (' ' * 4) _show_bcd(num, decimals, binary, bcd) return bcd
def twos_complement(binary): """Conversion algorithm from cs.cornell.edu/~tomf/notes/cps104/twoscomp.html#twotwo""" old = binary binary = ones_complement(binary) ones = binary binary = BaseDataType.increment(''.join(binary)) if DEBUG: print('Complements: one: {}, two: {}, (original: {})'.format( ''.join(ones), binary, ''.join(old))) dec = bin_to_dec(binary) sign, res = ('neg', -dec) if list(binary)[0] == '1' else ('pos', dec,) res_bin = dec_to_bin(res) if DEBUG: print('Final decimal is {}: {} ({})'.format(sign, res, res_bin)) return res_bin
def twos_complement(binary): """Conversion algorithm from cs.cornell.edu/~tomf/notes/cps104/twoscomp.html#twotwo""" old = binary binary = ones_complement(binary) ones = binary binary = BaseDataType.increment(''.join(binary)) if DEBUG: print('Complements: one: {}, two: {}, (original: {})'.format( ''.join(ones), binary, ''.join(old))) dec = bin_to_dec(binary) sign, res = ('neg', -dec) if list(binary)[0] == '1' else ( 'pos', dec, ) res_bin = dec_to_bin(res) if DEBUG: print('Final decimal is {}: {} ({})'.format(sign, res, res_bin)) return res_bin