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