作者accommodate (123)
看板Grad-ProbAsk
標題Re: [理工] [計組] 除法 算術右移
時間Thu Aug 4 11:32:20 2016
※ 引述《jordanforme (jordan)》之銘言:
:
: I是整數變數 哪一個式子可以正確計算出 (I/8)?
: A (I+7)>>3
: B (I>0?I>>3:(I+7)>>3)
: C I>>3
: D (I+((I>>31)&7))>>3
: 不太確定(B)裡面的? :符號是代表什麼意思
: 我解讀是說
: I如果大於零,I算術右移3bit
: else (I+7)右移3bit
: 不知道對不對?
: 謝謝
問一下D選項是什麼意思?
I>>31指的是全部清為0嗎?
&是啥意思?and嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.159.23.159
※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1470281543.A.F42.html
推 ken52011219: 移31次應該是剩下最高位元 &為and沒錯 08/04 11:55
推 kyuudonut: 算術右移 不一定是全部清為0 & 是做 AND 運算沒錯 08/04 11:56
→ kyuudonut: 可參考 bitwise operation 08/04 11:56
→ aa06697: sra 補什麼要看正負數 08/04 12:53
→ aa06697: 不過我記得>>不是算數右移是邏輯右移 所以是補0 08/04 12:57
→ kyuudonut: 要看那個變數是 signed 或 unsigned 吧? c 只有 >> 08/04 14:12
→ kyuudonut: compiler 再視 type 給 arthm 或 logic 的右移指令 08/04 14:14
→ aa06697: 喔喔對 就像樓上說的那樣 太久沒用到這個operator惹qq 08/04 15:11