#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
* Generate mask indicating leftmost 1 in x. Assume w=32.
* For example 0xFF00 -> 0x8000, and 0x6600 --> 0x4000.
* If x = 0, then return 0.
*/
int leftmost_one(unsigned x) {
if (!x)
return 0;
int y = x;
for (int i = 0; i < 32; i++) {
int z = y >> 1;
if (!z)
return y << i;
y = z;
}
}
int main() {
int x = 0x6600;
printf("x=%x\n", x);
printf("leftmost_one %x", leftmost_one(x));
return 0;
}
位运算
最新推荐文章于 2022-10-22 13:56:35 发布