串联的4位整数
Concatenating 4-bit integers
我正在使用 cpuid
opcode检索处理器模型和扩展模型的值。我正在使用的文档说我必须将扩展模型的值与模型的价值相连,我可以获得正确的模型。
Ex. Model: 2h
Model: Eh
Required Output: 2Eh
这是一个例子,但是还有更多类似的例子。我将如何将两个数字加在一起(4位无符号整数)以接收C 中所需的输出?
shift and add:
exModel = 0x2;
model = 0xE;
output = (exModel << 4) + model;
由于上面的评论中提到了它,您也可以使用工会,但我不建议 - 它使代码非常不可行(我认为违反了严格的别名规则):
union myUnion
{
unsigned char output;
struct
{
unsigned char model : 4; // the order of these two fields
unsigned char exModel : 4; // is system dependent
};
};
union myUnion u;
u.exModel = 0x2;
u.model = 0xE;
output = u.output;
shift -yes。
联合 - 否。
示例:
unsigned char ex_model = 0x2;
unsigned char model = 0xe;
unsigned int i = (ex_model << 4) | model;
相关文章:
- 如何打印boost多精度128位无符号整数
- 如何切换整数的 N 位
- 有没有一种优雅而快速的方法来测试整数中的 1 位是否位于连续区域
- 使用英特尔内联函数将打包的 8 位整数乘以浮点数向量
- 在线程中读取无符号整数时,c++ 位是否以原子方式切换?
- 在 C++ 中将整数数组转换为位集表示形式的最佳方法?
- 如何在整数中找到最低有效位(LSB)的位置?c ++
- FlatBuffers/Protobuf 中是否有支持任意 24 位有符号整数定义的可移植二进制序列化架构?
- 整数的反转位
- 从两个 4x64 位整数数组中获取取模
- 在 c++ 中输出 64 位整数
- 整数数据如何以位为单位存储在内存中?不是右对齐吗?
- AVX2 整数乘以有符号 8 位元素,产生有符号 16 位结果?
- 将浮点数 32 位变量类型转换为无符号整数 32 位时进行了哪些位级更改
- 如何从无符号字符(8位)缓冲区读取短整数(16位)
- 32位和64位无符号整数的位移位
- 如何对两个大整数进行位与运算
- 左移一个整数32位
- 改变一个整数的位
- 获取64位整数中位位置的数组