c - 使用按位运算符生成特定的位模式

标签 c logic bit-manipulation

这里我想生成一个位模式来设置 n 位等于 1 从位置 p 开始。 数字从 0 到 31 编号。 以下是我所做的。

int bitPattern(int n, int p) {
    int hex, num1, num2;
    hex = 0x80000000;
    num1 = (hex >> (31 - p));
    num2 = (hex >> (31 - (n+p)));
    return num1 ^ num2;
}

示例:

bitPattern(6, 2) should return 
..000011111100

任何运算符较少的替代解决方案?

最佳答案

你可以这样做:

return ((1<<n)-1)<<p;

制作n零位置的,计算(2^n)-1 ;回想一下 2^n1<<n , 所以表达式变成 ((1<<n)-1) .现在你需要添加 p后面的零,所以将结果左移 p .

关于c - 使用按位运算符生成特定的位模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16868389/

相关文章:

C 命名管道 (fifo)。父进程卡住

c - dirent 结构处理的文件/目录的最大数量

algorithm - 如何将 bool 函数转换为二元决策图

在指数和小数部分具有不同位数的格式之间转换

mysql - 测试给定集合中的所有值是否在 MySQL 查询的 SET 类型字段中打开

c 指向字符串数组的指针数组

c - 查找内存C中指针的值

xml - XSLT - 选择没有属性的节点

syntax - 语法错误和逻辑错误

c++ - 最快的位板换位 (5x5)