Re: 請問一個位元運算問題
※ 引述《modester (兄弟般的bf)》之銘言:
> ※ 引述《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個位元?(如果是計算題的話)
> 如果是的話,就不用再回覆我了
> 謝謝解惑
可以再請問一下嗎?
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 可設定單篇文章密碼
--
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 5 之 13 篇):