[理工] 計組 99交大資聯

看板Grad-ProbAsk作者 (古月小楓)時間14年前 (2012/01/09 00:08), 編輯推噓4(4012)
留言16則, 5人參與, 最新討論串1/1
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

01/09 00:21, , 1F
if(I > 0) then I>>3 else (I+7) >> 3
01/09 00:21, 1F

01/09 00:21, , 2F
那d選項呢?
01/09 00:21, 2F

01/09 00:22, , 3F
阿 看成b..
01/09 00:22, 3F

01/09 00:23, , 4F
d不就是按照括號的先做嗎@@
01/09 00:23, 4F

01/09 00:23, , 5F
D就是B 寫法不同爾以
01/09 00:23, 5F

01/09 00:24, , 6F
請問是看不懂d在做什麼,還是不懂為什麼這樣會得到答案
01/09 00:24, 6F

01/09 00:25, , 7F
當I是負數 他的sign bit就是1用算數右移I>>31會出現全
01/09 00:25, 7F

01/09 00:25, , 8F
部都是1 跟7作and就是7
01/09 00:25, 8F

01/09 00:32, , 9F
不好意思 我又模糊了 那為什麼是+7呢?
01/09 00:32, 9F

01/09 00:37, , 10F
請問一下大大 I+7 是代表甚麼動作阿?
01/09 00:37, 10F

01/09 00:38, , 11F
I >> 3 代表向右移三位 我有說錯嗎@@?
01/09 00:38, 11F

01/09 00:42, , 12F
右移代表除2的冪次方 右移3代表除2^3 有號數要先加回
01/09 00:42, 12F

01/09 00:43, , 13F
2^3-1 有號數要加回2^n-1結果才會對
01/09 00:43, 13F

01/09 01:02, , 14F
pikachu大說的對 修正後才對 只是這種修正是有來由的嗎??
01/09 01:02, 14F

01/09 01:03, , 15F
目前感覺就是硬記這種修正方法@@"
01/09 01:03, 15F

09/11 14:44, , 16F
目前感覺就是硬記這種修 https://daxiv.com
09/11 14:44, 16F
文章代碼(AID): #1F2Rzy9Z (Grad-ProbAsk)