matlab - Matlab中的位级运算

标签 matlab bit-manipulation

我们如何在 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/

相关文章:

java - 通过Java/Matlab获取Matlab的保存路径?

java - Matlab 到 C 到 Android

matlab - 如何在matlab中随机生成极限[m,n]中的所有数字?

matlab - 如何在matlab中输入图形的偏差

c++ - 关于按位 And 和 Shift 运算的问题

java - 位旋转 : interleave bytes in word with zero bytes using bitwise operators (<<, |、& 等)

filter - 我如何自己编写 Matlab "filter"函数?

algorithm - 循环移位的应用

algorithm - 了解具有位移位和 XOR 的五维 DP?

Java:检查长整型中是否设置了特定位