首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从C中的数字返回多个位

如何从C中的数字返回多个位
EN

Stack Overflow用户
提问于 2015-02-08 23:54:25
回答 3查看 1.9K关注 0票数 1

我有一个函数从一个数字中提取一个位:

代码语言:javascript
复制
int getBit (int value, int position) {

    return value & (1 << position));

    }

但是如何对一个范围(包括有符号数字和无符号数字)这样做呢?例如:

从0x12345678 (签名0) = 0x15获得10:14位

代码语言:javascript
复制
int getField (int value, int hi, int lo, bool isSigned)
EN

Stack Overflow用户

发布于 2015-02-09 00:45:27

我怀疑你可能想用另一种方式来处理整个问题。与其提取比特,为什么不直接使用比特掩码。

例如,要检查是否启用了字节中最重要的位:

代码语言:javascript
复制
if(byte & 0xf0) {}

要检查最不重要的位数,应该是:

代码语言:javascript
复制
if(byte & 0x01) {}

要检查多个比特(或一个“范围”),例如低阶咬取:

代码语言:javascript
复制
if(byte & 0x0f) {}

从你所说的来看,我怀疑这更接近你想要的东西,而且比转移到提取比特要简单得多。

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28400816

复制
相关文章

相似问题

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