位运算

来源:互联网 发布:手机版淘宝的新品上架 编辑:程序博客网 时间:2024/06/08 10:36
#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;}
0 0