看板Programming
标 题Re: 请问一个位元运算问题
发信站KKCITY (Fri Dec 3 04:57:28 2010)
转信站ptt!news.ntu!ctu-gate!ctu-peer!news.nctu!netnews.chu!News.leobbs.net!z
※ 引述《modester (兄弟般的bf)》之铭言:
> ※ 引述《[email protected] (-858993460)》之铭言:
> > 现代电脑用的是二的补数 而不是 signed-magnitude
> > 所以其实是这样的:
> > ~y = 1110 (-2)
> > -z = 1101 (-3)
> > ~y & -z = 1100 (-4)
> > x ^ 1100 = 1111 (-1)
> > 你这里只是碰巧答案对而已
> > 至於判断二补数的负数是几
> > 利用 ~x == -x-1 这个关系 (这是二补数的定义, 加起来是 2^n-1)
> > 也就是 -x == (~x)+1
> > 因此 -z 就是从 0011 =(变补)=> 1100 =(加1)=> 1101 这个就是 -3 了
> > 所以 1100 用一样的方法 1100 =(变补)=> 0011 =(加1)=> 0100 是 4
> > 於是 1100 就是 -4
> 感谢LPH大精辟的解说
> 所以重点是2's补数而非符号表示法
> 了解 感恩
> 那因为C语言整数是2 bytes
> 所以前面是不是都要补12个位元?(如果是计算题的话)
> 如果是的话,就不用再回覆我了
> 谢谢解惑
可以再请问一下吗?
ALU在将两个二进制8位元数10010110和00101101相加时
运算过程会将下列那个状态旗标设定为1?
A.满溢 B.负值 C.进位 D.零值
我的答案是C,但正确答案是B
难道其中之一是负值吗?
--
┌─────◆KKCITY◆─────┐ KKCITY 市民小密技 -文章标题上- ◣
│ bbs.kkcity.com.tw │ Ctrl+y 可设定单篇文章加密
└──《From:61.231.64.147
》──┘ ◤ Shift+y 可设定单篇文章密码
--