看板Programming
标 题请问一个位元运算问题
发信站KKCITY (Thu Dec 2 03:23:44 2010)
转信站ptt!news.ntu!ctu-gate!ctu-peer!news.nctu!netnews.chu!News.leobbs.net!z
最近在看程式的题目
看到有一题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
》──┘ ◤ 唱片公司授权,音乐尽情下载
--