首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接4位整数

连接4位整数
EN

Stack Overflow用户
提问于 2012-12-22 05:58:09
回答 2查看 285关注 0票数 1

我使用cpuid操作码来检索处理器模型和扩展模型的值。我使用的文档说,我必须将扩展模型的值与模型的值连接起来,这样我就可以获得正确的模型。

代码语言:javascript
复制
Ex. Model:         2h
Model:             Eh
Required Output:   2Eh

这只是一个例子,但还有更多类似的例子。如何将这两个数字(它们是4位无符号整数)连接在一起,以便在C++中获得所需的输出?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-22 05:59:42

Shift和add:

代码语言:javascript
复制
exModel = 0x2;
model = 0xE;

output = (exModel << 4) + model;

由于在上面的注释中提到了,你也可以使用联合,但我不推荐它-它使得代码非常不可移植(我认为这违反了严格的别名规则):

代码语言:javascript
复制
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;
票数 5
EN

Stack Overflow用户

发布于 2012-12-22 06:01:07

换档-好的。

联合-不是。

示例:

代码语言:javascript
复制
unsigned char ex_model = 0x2;
unsigned char model = 0xe;
unsigned int i = (ex_model << 4) | model;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13997722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档