首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >访问整数中的单个位,为什么需要使用>>?

访问整数中的单个位,为什么需要使用>>?
EN

Stack Overflow用户
提问于 2018-06-04 03:28:54
回答 1查看 43关注 0票数 1

我正在从一个用Java语言编写的处理器仿真器中读取源代码,下面的代码行利用>>运算符来读取存储在变量中的特定位的值。

代码语言:javascript
复制
        //Bits 3-5 of IR denote addressing mode of instruction
        int irAddressMode = (ir >> 2) & 0x07; 
        //Bits 6-7 of IR denote operation mode of instruction
        int irOpMode = ir & 0x03; 

我理解第二行,其中irOpMode是确定的。通过使用0x03ir中保存的值进行ANDing,我们只剩下位模式中的第6-7位的值(以小端字节顺序工作)。

然而,我不理解第一行中需要>>运算符,为什么在ANDing之前需要先执行(ir >> 2),才能找到ir变量中第3-5位的值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 03:37:13

不需要获取这些位,但需要获取保存在第一个变量中的IR寻址模式。你可以通过与0x1C进行AND运算来获取这些位,但是这样的值就太大了。假设寻址模式为1,则会得到值4(二进制100)。移位操作解决了这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50670209

复制
相关文章

相似问题

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