簡體   English   中英

僅使用if-else語句將16位二進制數轉換為十進制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM