二進制和十進制互轉的算法


  • 如何算一個二進制數轉成十進制:

二進制:1010  

解析: 1 (2的3次方)  0 (2的2次方) 1 (2的1次方) 0(2的0次方)

            數字的多少次方:2**3  pow(2,3)

    1*2^3+0*2^2+1*2^1+0*2^0

    0 長度len(s)-1-0---->2的3次方(長度-1,啟起位為0)

              1 長度len(s)-1-1---->2的2次方(長度-1,啟起位為0)

    2 長度len(s)-1-2---->2的1次方(長度-1,啟起位為0)

    3 長度len(s)-1-3---->2的0次方(長度-1,啟起位為0)

方法:1)遍歷,獲取第一位的數寫,然后轉換成int;

           2)每一位對應的2的多少次方;

           3)所有值相加求和

 

例:

bin_num=input("請輸入一個二進制的字符串:")
bin_num_length=len(bin_num)
result=0
for i  in range(bin_num_length):
    result+=int(bin_num[i])*2**(bin_num_length-1-i)  #取第0位的1,再*2的3次方(bin_num_length-1-i)
print(result)

 

  • 如何算一個十進制轉成二進制:

分析:

       讀一個數,一直除2再取余做為2進制的每一位上的數,一直除2,直到商為0為止。商放第一個數,余數放第2個數

a=10

l=[]

while a!=0:

  l.append(str(divmod(a,2)[1]))

  a=divmod(a,2)[0]  #divmod 返回一個包含商和余數的元組(a // b, a % b)

  print(a,str(divmod(a,2)[1]))

l=reversed(l)

print("".join(l))

>>>['1', '0', '1', '0']

 

  • 猜數小練習,隨機生成一個整數,你輸入一個數字,判斷大於、小於、等於。

import random

guess_num=random.randint(1,10)

user_num=int(input("請輸你猜測的數字:"))

if user_num==guess_num:

  print("猜中了")

elif user_num>guess_num:

  print("猜大了")

else:

  print("猜小了")

 

 

 

 

 

  •   題目:使用while循環,生成隨機整數(1-10),生成3的時候,結束 循環,否則 繼續循環執行

import random

while 1:

  random_num=random.randint(1,10)

  print(random_num)

       if random_num==3:

    break

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM