flopscope.

flopscope.numpy.binary_repr

flopscope.numpy.binary_repr(num, width=None)[flopscope source]

Return the binary representation of the input number as a string.

For negative numbers, if width is not given, a minus sign is added to the front. If width is given, the two's complement of the number is returned, with respect to that width.

In a two's-complement system negative numbers are represented by the two's complement of the absolute value. This is the most common method of representing signed integers on computers [1]_. A N-bit two's-complement system can represent every integer in the range 2N1-2^{N-1} to +2N11+2^{N-1}-1.

Parameters

num:int

Only an integer decimal number can be used.

width:int, optional

The length of the returned string if num is positive, or the length of the two's complement if num is negative, provided that width is at least a sufficient number of bits for num to be represented in the designated form. If the width value is insufficient, an error is raised.

Returns

bin:str

Binary representation of num or two's complement of num.

See also

Notes

binary_repr is equivalent to using base_repr with base 2, but about 25x faster.

References

footnote
1

Wikipedia, "Two's complement",
https://en.wikipedia.org/wiki/Two's_complement

Examples

>>> import flopscope.numpy as fnp
>>> flops.binary_repr(3)
    '11'
>>> flops.binary_repr(-3)
    '-11'
>>> flops.binary_repr(3, width=4)
    '0011'

The two's complement is returned when the input number is negative and width is specified:

>>> flops.binary_repr(-3, width=3)
'101'
>>> flops.binary_repr(-3, width=5)
'11101'