我目前有代码:
int getOperand(unsigned char b) {
int operand = b & 0x3F;
return operand;
}
'b' 是从字节文件中读入的 8 位二进制数。 “b”的最高 2 位是操作码,最后 6 位是操作数。我目前有这个代码设置来获取'b'的最后6位并将它们存储在变量'operand'中。我目前遇到的问题是我不知道如何将 OPERAND 提取为带符号的操作数。目前返回的数字只是无符号的。因此,如何编辑代码以使其返回带符号的数字?
最佳答案
如果我们假设您只是使用机器 native 2 的补码约定来存储适合 6 位有符号值的负字节的最后 6 位来表示负数,那么您检查符号位是否设置在您的 6位值,然后扩展符号位。
return (b & 0x20) ? b | ~0x3F : b & 0x3F;
关于c - 如何从这个字节中提取操作数?使用二进制补码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47824237/