2022年8月29日 星期一

Python a414: 位元運算之進位篇

 a414: 位元運算之進位篇

#a414: 位元運算之進位篇

'''

輸入說明

輸入的每一行有一個十進制正整數 N (1<=N<=2147483647)。

輸入的最後一行有一個 0,代表輸入的結束,這個數字請勿做任何處理。


輸出說明

對於每個正整數 N ,請輸出以二進制計算 N+1 時所需的進位次數。



範例輸入 #1

1

4

7

17

0

範例輸出 #1

1     1==> 1+1 = 10           ,1次

0     4==> 100 + 1 =101     ,0次

3     7==> 111  +1 =1000   , 3次

1    17=10001 +1 = 10010  , 1次


二進位中最靠右的1進為了幾次


e.g.10100(20)只要看100部分即可


     11001(25)最右的一無進位 


所以只要將一直判段輸入能否為2所整除,


若無,即將輸入除二且輸出++


while(a%2==0)


{


i++;


a/=2;


}


a是輸入i是輸出


'''

def cnt_bin(n):

    a=n

    i=0

    while(a%2!=0) :

        i=i+1

        a=int(a/2)

    

    return i


print ('a414: 位元運算之進位篇')

while True:

    try:

        N=  int(input('請輸入一個十進制正整數 N--> '))     #

        res=  cnt_bin(N)

        print(res)

        print('二進制計算 N+1 時所需的進位次數 --> ',res)

    except:

        break


>>> %Run a414.py

a414: 位元運算之進位篇

請輸入一個十進制正整數 N--> 1

1

二進制計算 N+1 時所需的進位次數 -->  1

請輸入一個十進制正整數 N--> 4

0

二進制計算 N+1 時所需的進位次數 -->  0

請輸入一個十進制正整數 N--> 7

3

二進制計算 N+1 時所需的進位次數 -->  3

請輸入一個十進制正整數 N--> 17

1

二進制計算 N+1 時所需的進位次數 -->  1

請輸入一個十進制正整數 N--> 

>>> 

沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...