看板 C_and_CPP 關於我們 聯絡資訊
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
james732:http://ppt.cc/3dF! 維基右邊的表格就有 1 跟 -1 03/24 18:46
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