Jam*_*sev 1 c bit-manipulation operators
假设你有2个数字:
int x = 1;
int y = 2;
Run Code Online (Sandbox Code Playgroud)
使用按位运算符,我该如何表示x-y?
比较两个数字的位数时A,B有三个可能性.以下假定无符号数.
A == B :所有位都相同A > B:两个数字之间不同的最重要位是设置A而不是BA < B:两个数字之间不同的最重要位是设置B而不是A代码可能如下所示
int getDifType(uint32_t A, uint32_t B)
{
uint32_t bitMask = 0x8000000;
// From MSB to LSB
for (bitMask = 0x80000000; 0 != bitMask; bitMask >>= 1)
{
if (A & bitMask != B & bitMask)
return (A & bitMask) - (B & bitMask);
}
// No difference found
return 0;
}
Run Code Online (Sandbox Code Playgroud)