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-->
>>>
沒有留言:
張貼留言