請問一個位元運算問題
最近在看程式的題目
看到有一題C語言
想向各位大大請益
#include <stdio.h>
main()
{
int x = 3, y = 1, z = 3;
printf(“%d\n”, x ^ ~y & -z);
}
(假設運算子優先次序為[~, -]> & > ^。)
我的想法是:
~y = 1110;-z = -3 = 1011
之後~y & -z = 1010
x ^(XOR) 1010 = 0011 ^ 1010 = 1001 = -1
後來用compiler編譯
發現答案沒錯
但發現以下問題
1. compiler編譯~y & -z = -4
但剛剛算出的結果是1010,難道1010 = -4?
1010在這個例子中,應該是-2吧?(最高位代表負號)
以上問題,有請高手解惑
感謝
--
┌─────◆KKCITY◆─────┐ ◢ ◤ 動態歌詞 讓你成為K歌之王!
│ bbs.kkcity.com.tw │ \^_^ / ★ http://www.kkbox.com.tw ★
└──《From:61.231.68.13 》──┘ ◤ 唱片公司授權,音樂盡情下載
--
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 13 篇):