看板Programming
标 题Re: 请问一个位元运算问题
发信站KKCITY (Thu Dec 2 11:34:58 2010)
转信站ptt!news.ntu!ctu-gate!news.nctu!news.ntust!csnews.cs.nctu!news.cs.nctu
※ 引述《[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个位元?(如果是计算题的话)
如果是的话,就不用再回覆我了
谢谢解惑
--
┌─────◆KKCITY◆─────┐ ● KKCITY 市民小常识 ●
│ bbs.kkcity.com.tw │ Q:文章标题前有#符号是代表什麽意思?
└──《From:61.231.68.13
》──┘ A:被作者加密了,需输入密码才能阅读
--