看板 Electronics 關於我們 聯絡資訊
: → TripleC:check whether your log2 can solve non-power-of-2 int 06/18 09:5 謝謝提醒,的確怪怪的。 這種寫法: for (log2=0; value>0; log2=log2+1) value = value>>1; 會造成log2(8) = 4。 如果我們希望log2(8) = log2(7) = log2(6) = log2(5) = 3的話。 可以改成這樣: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ function automatic integer log2; input integer in; begin for(log2 = 1; in > 2**log2; log2 = log2+1) begin end end endfunction ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- 信佛的人要知道:佛絕不會說謊。但請把握時光。 法滅盡經: http://www.cbeta.org/result/normal/T12/0396_001.htm 共勉之。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.73.168 ※ 編輯: zxvc 來自: 140.115.73.168 (06/18 16:38)
zxvc:抱歉,log2應該初值為1比較正確。 06/18 16:40
zxvc:其實我後來發現原網址的算法不能說有bug。只是它是用在"存一 06/18 16:43
zxvc:個數,最少要幾bits"。但它取名為log2,又它的log2(8) = 4, 06/18 16:44
zxvc:就有點奇怪。 06/18 16:44
zxvc:其實clog2 = celling of log base 2。 06/27 13:38