Как мне вывести на его место соответствующее целочисленное значение двоичного числа? (в python) - PullRequest
0 голосов
/ 03 августа 2020

Я хочу найти соответствующее целочисленное значение двоичного числа, но с его значением места. Я имею в виду, например: если двоичное число 1111, мне нужно напечатать 8,4,2,1.

Example2: 11011 , вывод должен be 16,8,2,1.

Я новичок в программировании. Не могу понять лог c. Пожалуйста помоги. Спасибо.

n=(bin(int(input("enter number: "))))#i need to find the corresponding place values .
print(n)

Кажется, я не могу понять лог c.

Ответы [ 3 ]

0 голосов
/ 03 августа 2020

Вы можете вычислить наибольшую степень двойки в числе, взяв его логарифм по основанию 2. Учитывая эту информацию, продолжайте вычитать последовательные степени двойки из числа, пока результат не будет go ниже нуля.

>>> import math
>>>
>>> parts = []
>>> b = 0b11011
>>> for i in range(int(math.log(b, 2)), -1, -1):
...     c = 2 ** i
...     if (b - c) >= 0:
...         b -= c
...         parts.append(c)
... 
>>> parts
[16, 8, 2, 1]
0 голосов
/ 03 августа 2020

Надеюсь, вы понимаете

n=(bin(int(input("enter number: "))))#i need to find the corresponding place values .

#list to store the binary number separated by each digit
nl = [] 

#A For loop to remove the '0b' in variable n
for i in range(len(n)): 
    if i!=0 and i!=1:
        nl.append(n[i])
    
nl.reverse()

#list to store the answer
al = []

#A for loop to create integer value of each digit
for i in range(len(nl)):
    if nl[i] =='1':
        al.append(2**i)
        
al.reverse()

print(al)

0 голосов
/ 03 августа 2020

Вы можете попробовать следующий код:

bin_num=bin(11011)

# Convert the binary number to int
int_num = int(bin_num, 2)

# Variable to store the results
text_bin = ""
for ind, character in enumerate(str(int_num)):
    # Get position
    pos = len(str(int_num))-ind-1
    # Suffix
    suffix=","
    if pos==0:
        suffix=""
    # Record position when 1
    if character=="1":
        text_bin+=str(2**pos)+suffix
        
print(text_bin)

Вывод:

16,8,2,1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...