[問題] 一題C語言

看板C_and_CPP作者 (......)時間13年前 (2011/03/24 18:44), 編輯推噓3(304)
留言7則, 4人參與, 最新討論串1/2 (看更多)
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

03/24 18:45, , 1F
二補數
03/24 18:45, 1F

03/24 18:46, , 2F
http://ppt.cc/3dF! 維基右邊的表格就有 1 跟 -1
03/24 18:46, 2F

03/24 20:39, , 3F
目前電腦似乎都用2補數系統,x&-x..是判斷是否為2^n ??
03/24 20:39, 3F

03/24 21:15, , 4F
0001 = 1, 1111 = -1
03/24 21:15, 4F

03/24 21:48, , 5F
x&-x 是在抓出 x 這個數最右的 1 在哪裡
03/24 21:48, 5F

03/24 21:49, , 6F
除非 x = 0 這時這個式子結果也是 0
03/24 21:49, 6F

03/24 21:50, , 7F
例如像 x=12 (00001100) -x=-12 (11110100) &起來後是 4
03/24 21:50, 7F
文章代碼(AID): #1DYo2TZY (C_and_CPP)
文章代碼(AID): #1DYo2TZY (C_and_CPP)