SOGO論壇
標題:
拜託高手解釋一下@@
[列印本頁]
作者:
guess1319
時間:
2009-4-11 12:50:13
標題:
拜託高手解釋一下@@
學校考試有一題是這樣子的(C語言)。
int cnt, x;
for(cnt=0, x= 0xffffffff; x; x<<=8, ++cnt);
printf("[%d,%d]",cnt,x);
問cnt和x會是多少,
答案是[4,0],
我知道x=0是為什麼,
可是前面cnt為什麼會是4一直搞不清楚,
能否幫解惑一下
作者:
09380938
時間:
2009-4-11 20:01:02
X= 0x ffff ffff(16進位) =1111 1111 1111 1111 1111 1111 1111 1111(2進位)
迴圈每次 左移8個位元補0
4次就變0
++cnt 沒每迴圈 +1
4次 cnt = 4
作者:
guess1319
時間:
2009-4-12 12:56:54
[quote]原帖由
09380938
於 2009-4-11 20:01 發表
X= 0x ffff ffff(16進位) =1111 1111 1111 1111 1111 1111 1111 1111(2進位)
謝謝解答。
不過再請教一下,
上面的16進位是如何轉換成2進位的?
一定要轉換成2進位才能繼續做答嗎?
因為我看完後再去做了相似題。
int cnt, x;
for(cnt=0, x=01234567; x; x>>=3, ++cnt);;
printf("[%d,%d]",cnt,x);
那我一樣是要把x=01234567這個轉換成2進位才能繼續做嗎?
還是有點不太了解><
作者:
笨笨小海
時間:
2009-5-7 02:43:00
解釋的好清楚,
原來C語言沒想像中的困難!!!!
歡迎光臨 SOGO論壇 (https://oursogo.com/)
Powered by OURSOGO.COM