我一直在做一些小代码测试,只是为了在毕业后重新编写我的编码但是这个得到了我的残余.这是问题:
给定n和2个整数p1,p2确定位置p1和p2中的位是否相同.位置为p1,p2和1.
例
22,3,2是真的,因为它是0001 0110,因为2和3位置是相同的.
我解决了它这是十进制转换为二进制,然后进入到一个字符串,并检查是否在该位置上的位都是一样的一种方式,但我觉得还有一个更简单的方法做位操作,但我不是真的好用它.我在想,如果我能位转移到第一位置,并比较他们,我能得到答案,但后来我碰到了问题,当我把它们转移到因为他们刚刚离开溢出的转变.
你可以将有趣的位移到最不重要的位置,然后屏蔽掉所有其他位&.
假设p1并且p2是从最低有效位计数的从零开始的索引:
bool same_bits = (((n >> p1) & 1) == ((n >> p2) & 1))
Run Code Online (Sandbox Code Playgroud)