看板 C_and_CPP 關於我們 聯絡資訊
hi 以下是我今天面試所遇到的考題, 來這裡請教大家 a,b是 unsigned int 最佳化以下兩段程式碼 1 跟 2 1.if ( (a/24) > b ) return 1; 2.a=(b/1024)*10; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.35.138 ※ 編輯: apey 來自: 220.133.35.138 (06/13 23:12)
Ting1024:很簡單 06/13 23:15
Ting1024:全部用 <<, >> 替代 06/13 23:15
purpose:(a << 5) - (a << 3) (b << 3) + (b << 1) 06/13 23:27
firejox:if((a>>3)>((b<<1)+b))return 1; 06/13 23:36
firejox:a=(b>>7)+(b>>9) 06/13 23:40
wawi2:四樓的應該不行.....因為a是unsigned 不可隨便換@@ 06/13 23:42
wawi2: unsigned int 06/13 23:44
firejox:a=((b^(b&1023))>>7) + ((b^(b&1023))>>9) 06/13 23:45
littleshan:我好奇是哪一家公司出的題目 06/14 12:10
loveme00835:如果不考慮前後文, 1或許可改成 return (a > 24*b); 06/14 12:17
ericwang1017:1.if ( (a>>4) > (b<<3) ) return 1; 06/14 13:50
firejox:@l大:假如用乘法b有可能會溢出 06/14 19:11
loveme00835:<囧 06/14 22:11
kakar0to:安霸 我也考過... 06/15 11:16
hardyguu:不了解 << , >>在這邊代表什麼... 06/17 17:50
firejox:位移呀 06/17 19:46
hardyguu:位移,了解 但不了解(a<<5)-(a<<3) 跟a/24的關係@@ 06/18 15:52
purpose:寫錯字母...應該是 (b << 5) - (b << 3) 算出 b = b*24; 06/18 21:29
purpose:再做 a,b 的大小比較 06/18 21:29
hardyguu:哈 終於了解了 06/18 22:53