Google Search Box

自訂搜尋

Wednesday, July 14, 2010

Re: [閒聊] 炮灰Day1 程式設計概要

作者: nonsweet (不甜) 站內: Examination
標題: Re: [閒聊] 炮灰Day1 程式設計概要
時間: Wed Jul 14 21:48:44 2010


砲灰在下我這題是這樣寫的,
不曉得對不對說 (我程式很爛 orz)
bit) 8 76543210
題目假設數值444以二進位表示為 0......0 00000001 10111100
會傳回最高有效位為1的位置為8

int most_significant_set_bit(int num){

int i = 0;

if(num == 0)
return -1;

if(num == 1)
return i;

if(num/2 != 1){
i++;
num = num/2;
}
return i+1;
}

舉例:
數值0 -> 二進位全為0 -> 回傳-1
數值1 -> 二進位為 00000001 -> 最高有效位為1的位置為0

數值8 -> 二進位為 00001000 -> 最高有效位為1的位置為3

初始 i = 0 -> 8/2 = 4 != 1 -> 4/2 = 2 != 1 -> 2/2 = 1
i = 1 i = 2 跳出if

回傳 i+1 = 3

寫得很陽春,自我感覺良好覺得好像是對的,
如果有錯不要鞭我鞭得太嚴重XD
希望有分數∼

1 comment:

  1. → BeTry:好像沒有遞迴呼叫的地方= =? 203.70.223.213 07/14 21:53
    → nonsweet:因為我只寫了副程式QQ 沒有寫main() 220.133.50.57 07/14 21:54
    → BeTry:副程式沒有呼叫副程式自己@@ num>=4 203.70.223.213 07/14 21:55
    → BeTry:應該只會回傳1~沒看錯的話 203.70.223.213 07/14 21:56

    ReplyDelete