我正在研究一个函数,它基本上可以看到两个整数中的哪一个更大.传递的参数是232位整数.诀窍是允许的唯一运算符! ~ | & << >> ^(没有转换,除了signed int,*,/, - 等其他数据类型).
到目前为止,我的想法是^将两个二进制文件放在一起,以查看1它们不共享的值的所有位置.我想要做的就是取这个值并将1最左边的距离隔离开来.然后看看它们中哪一个具有该值.那个价值就会越大.(假设我们使用8位整数而不是32位).如果传递的两个值是01011011和01101001
我用^它们得到的00100010.然后我想00100000用其他的话来做它01xxxxxx -> 01000000
然后&用第一个数字
!!结果并返回它.如果是1,则第一个#更大.
关于如何01xxxxxx -> 01000000或其他什么帮助的任何想法?
忘记注意:没有ifs,whiles,fors等......