Chinaunix

标题: 大家看看:怎么用异或和左移或者右移实现求绝对值 [打印本页]

作者: paul-luo    时间: 2006-06-30 10:53
标题: 大家看看:怎么用异或和左移或者右移实现求绝对值
怎么用异或和左移或者右移实现求绝对值
作者: isnowran    时间: 2006-07-02 02:08

  1. int abs( int i )
  2. {
  3.         int bit = 1 << sizeof( i ) - 1;
  4.         if( i != ( i | bit ) )
  5.                 i = ~i + 1;

  6.         return i;
  7. }
复制代码

[ 本帖最后由 isnowran 于 2006-7-2 22:44 编辑 ]
作者: yg    时间: 2006-07-02 20:34
差了一些吧
作者: fedoracore4    时间: 2006-07-03 08:14
int abs(int x)
{
    if ((x>>7) == 1)
       return ~x + 1;
    else
        return x;
}
这个是我写的,不知道还有没有更高效的,请大家指点




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2