Re: 請問一個位元運算問題
※ 引述《LPH66.bbs@ptt.cc (-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:被作者加密了,需輸入密碼才能閱讀
--
討論串 (同標題文章)
完整討論串 (本文為第 3 之 13 篇):