zachary027 发表于 2011-08-19 15:43

难题

给定一个无符号的32位整数x,写个程序计算不大于x的最大的2的幂。为了加快运算速度,不可以使用条件判断、循环等带有分支的语句。

shang2010 发表于 2011-09-02 17:44

本帖最后由 shang2010 于 2011-09-02 17:46 编辑

不懂

nketc 发表于 2011-09-02 20:42


    int e = 31;
    if (x&0xFFFF0000)   { e -=16; x >>=16; }
    if (x&0x0000FF00)   { e -= 8; x >>= 8; }
    if (x&0x000000F0)   { e -= 4; x >>= 4; }
    if (x&0x0000000C)   { e -= 2; x >>= 2; }
    if (x&0x00000002)   { e -= 1; }
    return 31 - e;

nketc 发表于 2011-09-02 20:42

带if了。

shang2010 发表于 2011-09-02 22:40

如果 一个函数存在多个return,,算分支不??:em03::em03:

zcheung 发表于 2011-09-03 11:34

等待高手解答

cjaizss 发表于 2011-09-03 12:09

如果 一个函数存在多个return,,算分支不??
shang2010 发表于 2011-09-02 22:40 http://bbs.chinaunix.net/images/common/back.gif


    如不分支,多个return根本没有作用.你想想.

shang2010 发表于 2011-09-03 12:13

讨厌做智力题,,


用这个分支。。
return a>b:a:b;

smalloc 发表于 2011-09-04 12:07

本帖最后由 smalloc 于 2011-09-04 15:49 编辑

C语言题目吗?

汇编的话, 见这贴12L
http://bbs.chinaunix.net/viewthread.php?tid=1253307&extra=&page=2

nketc 发表于 2011-09-04 14:58

本帖最后由 nketc 于 2011-09-04 15:09 编辑

时空转换,查表吧。
页: [1]
查看完整版本: 难题