如果x = 2014,
下面函式的返回值是(
23)
//二進位制(unsigned int 32
位)中0
的個數。
int fun(unsigned int x)
return n; }
while迴圈終止的條件:當
while
迴圈裡的
x計算到unsigned int的最大值(即0xffffffff)時迴圈就會停止。
在迴圈中,每執行x=x|(x+1)
語句一次,得到的
x的二進位制中
0的個數就比原來少1;
2014的二進位制為
00000000 00000000 00000111 11011110
。其中0的個數為
23個。所以執行23
次後,迴圈中得到的n為
23,x=0xffffffff;
再次判斷,此時
x+1大於
oxffffffff.
while迴圈中詳細過程:
n=1,x為
00000000 00000000 00000111 11011111.
n=2,x為
00000000 00000000 00000111 11111111.
n=3,x為
00000000 00000000 00001111 11111111. ……
n=23,x為
0xffffffff (十進位制2147483648)
。此時x+1
為0,while
迴圈終止。
輸出x+1的過程如下:
注:此演算法可用於求二進位制中0個數,將引數x型別由unsigned int 改為int 也成立。
python乙個關於比賽順序的題目
python桌球比賽順序練習題,是關於兩個桌球隊進行比賽,具體python問題是這樣的。簡述 已知有兩支桌球隊要進行比賽,每隊各出三人 甲隊為a,b,c三人,乙隊為x,y,z三人 已抽籤決定比賽名單。問題 有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請程式設計序找出三隊賽手的名單。...
關於乙個面試題目
曾經碰到乙個面試題目,誰能給出標準答案呢?200個小孩圍乙個圈,從頭開始1到4報數,報到4這個數的退出圓圈,最後乙個留在圈裡的小孩編號是多少?在網上看到很多人給出的答案是 標準答案.public static void main string args while list.size 4 syste...
乙個關於位運算的小題目,基礎差真可怕
題目 3 4 2 8 求結果 解答 思路 a 3 4 b a 2 c b 8 3 4 7,7 2相當於把7擴大2的2次方倍,為28,是按位異或運算子,把兩個數的二進位制形式進行比較,相同的得0,不同的得1,負數用補碼進行運算,正數的原碼反碼補碼一樣,8的二進位制為00001000,反碼為111101...