Converteer decimaal naar binair in python

Is er een module of functie in python die ik kan gebruiken om een ​​decimaal getal om te zetten in zijn binaire equivalent?
Ik kan binair naar decimaal converteren met int(‘[binary_value]’,2), dus is er een manier om het omgekeerde te doen zonder de code zelf te schrijven?


Antwoord 1, autoriteit 100%

alle getallen worden binair opgeslagen. als u een tekstuele weergave van een bepaald getal in binair getal wilt, gebruik dan bin(i)

>>> bin(10)
'0b1010'
>>> 0b1010
10

Antwoord 2, autoriteit 30%

"{0:#b}".format(my_int)

Antwoord 3, autoriteit 27%

Zonder de 0b ervoor:

"{0:b}".format(int)

Vanaf Python 3.6 kun je ook geformatteerde tekenreeks gebruiken of f-string, — PEP:

f"{int:b}"

Antwoord 4, autoriteit 18%

def dec_to_bin(x):
    return int(bin(x)[2:])

Zo eenvoudig is het.


Antwoord 5, autoriteit 6%

Je kunt ook een functie uit de numpy-module gebruiken

from numpy import binary_repr

die ook voorloopnullen kan verwerken:

Definition:     binary_repr(num, width=None)
Docstring:
    Return the binary representation of the input number as a string.
    This is equivalent to using base_repr with base 2, but about 25x
    faster.
    For negative numbers, if width is not given, a - sign is added to the
    front. If width is given, the two's complement of the number is
    returned, with respect to that width.

Antwoord 6, autoriteit 5%

Ik ben het eens met het antwoord van @aaronasterling. Als u echter een niet-binaire tekenreeks wilt die u in een int kunt casten, kunt u het canonieke algoritme gebruiken:

def decToBin(n):
    if n==0: return ''
    else:
        return decToBin(n/2) + str(n%2)

Antwoord 7, autoriteit 2%

n=int(input('please enter the no. in decimal format: '))
x=n
k=[]
while (n>0):
    a=int(float(n%2))
    k.append(a)
    n=(n-a)/2
k.append(0)
string=""
for j in k[::-1]:
    string=string+str(j)
print('The binary no. for %d is %s'%(x, string))

Antwoord 8

Voor de volledigheid: als u de representatie van een vast punt naar zijn binaire equivalent wilt converteren, kunt u de volgende bewerkingen uitvoeren:

  1. Verkrijg het gehele en breukgedeelte.

    from decimal import *
    a = Decimal(3.625)
    a_split = (int(a//1),a%1)
    
  2. Converteer het breukdeel in zijn binaire representatie. Om dit te bereiken vermenigvuldigt u achtereenvolgens met 2.

    fr = a_split[1]
    str(int(fr*2)) + str(int(2*(fr*2)%1)) + ...
    

Je kunt de uitleg hierlezen.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

3 × 5 =

Other episodes