我们如何在 Matlab 中进行这种位级运算:
int instructionWord;
a = (instructionWord >>> 21) & 0x1F;
代码将instructionWord 右移21 位,得到最少的5 位。这如何在 Matlab 中等效地完成?
最佳答案
鉴于您的输入值为整数,您可以执行以下操作:
a = mod( floor(instructionWord/2^21), 32)
另一个更像位的解决方案是:
a = bitand( bitshift(instructionWord, -21), hex2dec('1F'))
如果您向最后一个方法提供整数以外的任何内容,它会抛出错误。
顺便说一下,您的变量 instructionWord 被声明为有符号整数。但如果它是一个指令字或类似的东西,一个无符号整数会更有意义。上面的表达式期望您的输入只是积极的。如果不是,则需要更多代码来在 matlab 中对 >>>
(逻辑右移)进行建模。
关于matlab - Matlab中的位级运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14731947/