c/c++语言开发共享使用按位运算符在C中最多两个数字


可能重复:
在不使用if-else或任何其他比较运算符的情况下查找最多两个数字

更伟大:

if x > y then return 1, else return 0 

例:

合法经营者: ! ~ & ^ | + <> ! ~ & ^ | + <>

isGreater是function..

我试过了:

 int isGreater(int x, int y) { return (y+(~x+1)) >> 31 & 1; } 

但不工作.. :((让我知道我还能做些什么?

    给定x,y

    尝试x + -y如果<0则y更大,如果> 0则x更大。

    -y = y的二进制补码:

     -y = (~(y-1)) <==> -y = (~y)+1 

    从我看到的,你用(~y +1))做二进制补码,这是相同的。

    然后bitshift >> 31得到MSB,等于1。
    确保设置parantheses,运算符优先级!

      (y+-x) >> (31 & 1); != ((y+-x) >> 31) & 1; 

    太容易了 – 因为你在合法操作符列表中有+ ,你可以简单地合成- (正如其他人注意到的那样)然后做一个减法并提取符号。 如果你省略+ (因为它不是一个按位运算符)并且只用按位运算( & | ^ ~ )和移位来回答问题就会更有趣。

    当然,你可以从按位运算和移位中合成+ / -但实际上有一种更简单的方法。

      以上就是c/c++开发分享使用按位运算符在C中最多两个数字相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      www.ctvol.com true Article c/c++语言开发共享使用按位运算符在C中最多两个数字

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/559626.html

      (0)
      上一篇 2021年1月27日 上午4:48
      下一篇 2021年1月27日 上午4:49

      精彩推荐