看板 Grad-ProbAsk 關於我們 聯絡資訊
I is an integer variable. which of the following expressions give the correct result of (I/8)? a) (I+7) >> 3 b)(I > 0 ? I >>3 : (I + 7) >> 3) c)I >> 3 d)(I + ((I >> 31) & 7)) >> 3 ------------------------------ 答案 B D 我看懂b選項 但是d選項看不懂@@'' 麻煩高手解釋一下了>< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.41.128.199
Byzantin:if(I > 0) then I>>3 else (I+7) >> 3 01/09 00:21
SiriusCloud:那d選項呢? 01/09 00:21
Byzantin:阿 看成b.. 01/09 00:22
Byzantin:d不就是按照括號的先做嗎@@ 01/09 00:23
pikachu123:D就是B 寫法不同爾以 01/09 00:23
Byzantin:請問是看不懂d在做什麼,還是不懂為什麼這樣會得到答案 01/09 00:24
pikachu123:當I是負數 他的sign bit就是1用算數右移I>>31會出現全 01/09 00:25
pikachu123:部都是1 跟7作and就是7 01/09 00:25
SiriusCloud:不好意思 我又模糊了 那為什麼是+7呢? 01/09 00:32
r596twy:請問一下大大 I+7 是代表甚麼動作阿? 01/09 00:37
r596twy:I >> 3 代表向右移三位 我有說錯嗎@@? 01/09 00:38
pikachu123:右移代表除2的冪次方 右移3代表除2^3 有號數要先加回 01/09 00:42
pikachu123:2^3-1 有號數要加回2^n-1結果才會對 01/09 00:43
r596twy:pikachu大說的對 修正後才對 只是這種修正是有來由的嗎?? 01/09 01:02
r596twy:目前感覺就是硬記這種修正方法@@" 01/09 01:03
sneak: 目前感覺就是硬記這種修 https://daxiv.com 09/11 14:44