
我们每一种计算机语言最终都会通过编译器转换成机器语言来执行,所以在编程中,位操作是常见且高效的数据处理手段之一,下面列出一些基于C语言的场景实例,便于日常开发中学习和使用
例一,编写函数 getbits(x,p,n) 从数值x的第p位开始返回n位数值
#include <stdio.h>
int getbits(unsigned x, int p, int n);
int main() {
unsigned x = 0xF994;
int p = 4;
int n = 3;
int z = getbits(x, p, n);
printf("getbits(%u (%x), %d, %d) = %u (%X)n", x, x, p, n, z, z);
}
// ff94 11111111100.101.00 # original number
// >> p+1-n [2] 0011111111100.101. # shift desired bits to right
// & ~(~0 << n) [7] 0000000000000.101. # clear all the other (left) bits
int getbits(unsigned x, int p, int n) { return x >> (p - n + 1) & ~(~0 << n); }




近期评论