Like built-in bin(), except negative values are represented in twos-complement, and the leading bit always indicates sign (0=positive, 1=negative). >>> bin(10) '0b0 1010' >>> bin(~10) # ~10 is -11 '0b1 0101'
(num, max_bits=None)
| 128 | return list(_iter_bits_lsb(value)) |
| 129 | |
| 130 | def bin(num, max_bits=None): |
| 131 | """ |
| 132 | Like built-in bin(), except negative values are represented in |
| 133 | twos-complement, and the leading bit always indicates sign |
| 134 | (0=positive, 1=negative). |
| 135 | |
| 136 | >>> bin(10) |
| 137 | '0b0 1010' |
| 138 | >>> bin(~10) # ~10 is -11 |
| 139 | '0b1 0101' |
| 140 | """ |
| 141 | |
| 142 | num = num.__index__() |
| 143 | ceiling = 2 ** (num).bit_length() |
| 144 | if num >= 0: |
| 145 | s = bltns.bin(num + ceiling).replace('1', '0', 1) |
| 146 | else: |
| 147 | s = bltns.bin(~num ^ (ceiling - 1) + ceiling) |
| 148 | sign = s[:3] |
| 149 | digits = s[3:] |
| 150 | if max_bits is not None: |
| 151 | if len(digits) < max_bits: |
| 152 | digits = (sign[-1] * max_bits + digits)[-max_bits:] |
| 153 | return "%s %s" % (sign, digits) |
| 154 | |
| 155 | class _not_given: |
| 156 | def __repr__(self): |
no test coverage detected