原帖由 converse 于 2009-1-13 19:47 发表
http://www.cppblog.com/converse/archive/2008/06/21/54225.html
原帖由 r2r4 于 2009-1-13 17:26 发表
或许还可以这样
1。位操作指令取得第一个1的bit
2。查看这个bit的低一位是否为1
3。if y, 取大的那个2幂;else 取小的那个
5 instructions,加一个返回值1条,一共6条 x86指令
原帖由 r2r4 于 2009-1-13 17:26 发表
或许还可以这样
1。位操作指令取得第一个1的bit
2。查看这个bit的低一位是否为1
3。if y, 取大的那个2幂;else 取小的那个
5 instructions,加一个返回值1条,一共6条 x86指令
原帖由 NalaGinrut 于 2009-1-14 16:08 发表
这个方法仍然有瑕疵,比如1111可以得到正确值16,但是1110就会得到8,不能算最优值。
我觉得不如就用最笨的查表法,建立一个0到64位幂值的表,然后逐一查询,遇到合适的两个值也可求差值决定最优的值。
作 ...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |