Re: [問題] 面試考題 程式最佳化
※ 引述《apey ()》之銘言:
: hi
: 以下是我今天面試所遇到的考題, 來這裡請教大家
: a,b是 unsigned int
改下題目 設 a b 是 unsigned short
不然玩不下去
: 最佳化以下兩段程式碼 1 跟 2
: 1.if ( (a/24) > b ) return 1;
: 2.a=(b/1024)*10;
define MUL2(XX) ( (XX)<<1 )
#define MUL4(XX) ( (XX)<<2 )
#define MUL8(XX) ( (XX)<<3 )
#define MUL16(XX) ( (XX)<<4 )
#define MUL64(XX) ( (XX)<<6 )
#define DIV256(XX) ( (XX)>>8 )
#define MUL86(XX) (MUL64(XX) + MUL16(XX) + MUL4(XX ) + MUL2(XX))
#define DIV3(XX) DIV256(MUL86(XX) )
#define DIV24(XX) DIV3((DIV8(XX)))
#define DIV1024(XX) ( (XX)>>10 )
#define MUL10(XX) (MUL2(XX) + MUL8(XX))
#define IS_NEGATIVE(RR) ((RR)&(0x8000))
1. if( IS_NEGATIVE( DIV24(a ) -b ) )
return 1;
2. a = MUL10( DIV1024(b) );
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.158.204
※ 編輯: DrStein 來自: 59.120.158.204 (06/14 19:21)
→ firejox:@@為什麼要改成short?
會溢位...
→
06/14 19:33, , 1F
06/14 19:33, 1F
已更正
※ 編輯: DrStein 來自: 59.120.158.204 (06/14 19:36)
推
06/14 21:35, , 2F
06/14 21:35, 2F
→
06/14 21:51, , 3F
06/14 21:51, 3F
已修改嚕
※ 編輯: DrStein 來自: 58.115.132.79 (06/14 21:53)
推
06/14 22:26, , 4F
06/14 22:26, 4F
→
06/14 23:02, , 5F
06/14 23:02, 5F
→
06/14 23:03, , 6F
06/14 23:03, 6F
推
06/15 05:57, , 7F
06/15 05:57, 7F
※ 編輯: DrStein 來自: 59.120.158.204 (06/15 11:10)
討論串 (同標題文章)