[問題] 對常數取補數

看板C_and_CPP (C/C++)作者 (￾N ￾ )時間15年前 (2010/10/21 10:12), 編輯推噓2(206)
留言8則, 5人參與, 最新討論串1/1
例如 int a=3; printf("%d",~a); 為何出來是-4 取補數的結果不是應該是-3嗎? 這與小弟在高職所教的數位邏輯的補數結論不同 感謝解答! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.71.122.70

10/21 10:15, , 1F
現在大多是用 2補數 , -X == (~X) + 1
10/21 10:15, 1F

10/21 10:16, , 2F
3 = 00000000000000000000000000000011
10/21 10:16, 2F

10/21 10:17, , 3F
~3 = 11111111111111111111111111111100 = -4
10/21 10:17, 3F

10/21 10:19, , 4F
先把a每個bit取NOT 再把數字用2's complement來看
10/21 10:19, 4F

10/21 10:21, , 5F
所以~是對所有位元取補數,但輸出時當成二補數來看嗎?
10/21 10:21, 5F

10/21 10:21, , 6F
暸解了...感謝大家
10/21 10:21, 6F

10/21 17:02, , 7F
是取每個bit取反相(非補數,不一樣)後,再以2補數解讀
10/21 17:02, 7F

10/21 17:04, , 8F
補數:取反相之後再加1(如1樓所示),~是反相非補數.弄清.
10/21 17:04, 8F
文章代碼(AID): #1Clw6R4l (C_and_CPP)
文章代碼(AID): #1Clw6R4l (C_and_CPP)