[英]Converting 16 bit binary number to decimal using only if-else statements
我需要編寫一個程序,要求用戶輸入一個16位二進制數,然后將其轉換為十進制。 我只允許使用if-else語句(沒有for / while等。也沒有函數)。
我的問題不是轉換本身。
我的問題是,一旦用戶輸入的數字少於16位,就將其數字表示為16位數字。 例如,如果用戶輸入“ 1111”,則需要將其轉換為“ 0000 0000 0000 1111”。
我試過了 :
A=int(input("Please enter a 16-bit decimal number:"))
B=0000000000000000
C=A or B
print (C)
這給了我A的原始號碼(我真的不明白為什么)。
我還嘗試將用戶的輸入視為字符串,但是據我了解,Python開始從左至右對字符進行編號,因此在A = 1111的情況下,我只有A [0] -A [3],所以我有點卡住了
我知道我可以使用一些函數,但是賦值只能使用我們在課堂上學到的主題,而這基本上只是if-else語句(和賦值語句)。
謝謝。 尤爾
注意, int()
和input()
都是函數。
還要注意, int()
確實執行了您說的沒有函數的操作,即它將字符串轉換為數字。
這非常令人困惑。
假設您確實有一個字符串s
其中恰好有16個二進制數字,則可以將其轉換為整數,如下所示:
num = 0
if s[0] == '1':
num += 1
if s[1] == '1':
num += 2
if s[2] == '1':
num += 4
依此類推,直到s[15]
都將num
添加32768
。
您可以通過如下操作“擠出” if
:
num = 0
num += (s[0] == '1') * 1
num += (s[1] == '1') * 2
num += (s[2] == '1') * 4
...
num += (s[15] == '1') * 32768
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.