作者supercygnus (......)
看板C_and_CPP
標題[問題] 一題C語言
時間Thu Mar 24 18:44:42 2011
include<stdlib.h>
include<stdio.h>
int main(void){
int x=1;
printf("%d\n",x&-x);
system("pause");
return 0;
}
這題輸出的結果是1
但是要怎麼算的算出1
&是and運算,1的二進位是0001 哪-1的二進位要用什麼方式表達呢?
一的補數嗎還是二的補數表示,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.131.248
→ james732:二補數 03/24 18:45
推 tropical72:目前電腦似乎都用2補數系統,x&-x..是判斷是否為2^n ?? 03/24 20:39
推 Zephyr750:0001 = 1, 1111 = -1 03/24 21:15
推 LPH66:x&-x 是在抓出 x 這個數最右的 1 在哪裡 03/24 21:48
→ LPH66:除非 x = 0 這時這個式子結果也是 0 03/24 21:49
→ LPH66:例如像 x=12 (00001100) -x=-12 (11110100) &起來後是 4 03/24 21:50