我正在使用cpuid
操作码来检索处理器模型和扩展模型的值。我正在使用的文档说我必须将扩展模型的值连接到模型的值,并且我可以得到正确的模型。
Ex. Model: 2h
Model: Eh
Required Output: 2Eh
这是一个例子,但还有更多喜欢它。如何将两个数字连接在一起(这是4位无符号整数)以在C ++中接收所需的输出?
答案 0 :(得分:5)
转移并添加:
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;
答案 1 :(得分:1)
转变 - 是的。
联盟 - 没有。
示例:
unsigned char ex_model = 0x2;
unsigned char model = 0xe;
unsigned int i = (ex_model << 4) | model;