Re: [理工] [計組] 除法 算術右移

作者: accommodate (123)   2016-08-04 11:32:20
※ 引述《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嗎?
作者: ken52011219 (呱)   2016-08-04 11:55:00
移31次應該是剩下最高位元 &為and沒錯
作者: kyuudonut (善良老百姓)   2016-08-04 11:56:00
算術右移 不一定是全部清為0 & 是做 AND 運算沒錯可參考 bitwise operation
作者: aa06697 (todo se andarà)   2016-08-04 12:53:00
sra 補什麼要看正負數不過我記得>>不是算數右移是邏輯右移 所以是補0
作者: kyuudonut (善良老百姓)   2016-08-04 14:12:00
要看那個變數是 signed 或 unsigned 吧? c 只有 >>compiler 再視 type 給 arthm 或 logic 的右移指令
作者: aa06697 (todo se andarà)   2016-08-04 15:11:00
喔喔對 就像樓上說的那樣 太久沒用到這個operator惹qq

Links booklink

Contact Us: admin [ a t ] ucptt.com