c++ - 使用位掩码重构整数

标签 c++ c bit-manipulation

我对位掩码和位操作很陌生。你能帮我理解这一点吗?我有三个整数 a、b 和 c,我用以下操作创建了一个新数字 d:

int a = 1;
int b = 2;
int c = 92;

int d = (a << 14) + (b << 11) + c;

我们如何使用 d 重构 a、b 和 c?

最佳答案

我不知道您的abc 的范围。但是,假设 ab 为 3 位,c 为 11 位,我们可以这样做:

a = ( d >> 14 ) & 7;
b = ( d >> 11 ) & 7;
c = ( d >>  0 ) & 2047;

更新:

and-mask 的值计算为:(2^NumberOfBits)-1

关于c++ - 使用位掩码重构整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18196914/

相关文章:

c++ - 带有附加变量的 Glfw 回调

c++ - 无法理解这个 c++ typedef

c - USSD代码的AT命令

以下需要解释的 C 指针输出

rust - 你如何在 Rust 中设置、清除和切换单个位?

c++ - 什么是转换构造函数

c++ - 数组中元素的自定义排序

c - 设置vscode编译C文件

delphi - 使用按位/其他运算符的 Pascal Script Round

language-agnostic - XOR 变量交换如何工作?