从长时间中提取每个单词的钻头操作
bitwise operation to extract each individual word from a long
我有一个与汇编语言指令相对应的long
。这是问题;第一个字段是opcode。它可以是1或2位。因此,例如在120602
中,12是OpCode。在10602
中,1是OpCode。
我想提取每个字段;如果OpCode是左侧的第一个1-2个数字,则在其右侧为1个,为OP1MODE,其右侧为1个为OP1GPR,其右侧为1是OP2Mode,最后,最后一部分是OP2GPR。理想情况下,我想将每个分配给其自身的变量以供以后使用,或在数组中分离它们。
我认为使用位操作可以实现。即面具和转移。
一个人将如何用刻度操作分配数字?
litwise/bitshifts除非将字段组合在基本2表示中,否则不会对您有任何好处。如图所示,您的数字是基本10。另一方面,您可以使用整数划分和Modulo进行显示的数字。
120602 / 10000 = 12
120602 % 10000 = 602
这些基本上对应于以下二进制数字的操作类型:
0x1D71A >>> 12 = 0x1D
0x1D71A & 0xFFF = 0x71A
做到这一点的一种简单方法(但无需刻度操纵),是定义一个包含五个整数的数组,然后填充它的数字数字。您将必须从数字的末尾开始,这很容易。
Java中的一个示例:
long number = 120602;
int[] op = new int[5];
for(int i = 0; i < 4; ++i) {
op[i] = (int) (number % 10);
number /= 10;
}
op[4] = (int) number;
和这里:
-
op[0]
是 op2gpr -
op[1]
是 op2mode -
op[2]
是 op1gpr -
op[3]
是 op1mode -
op[4]
是 opcode
相关文章:
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 文本文件中的单词链表
- 重载操作程序时出错>>用于类中的字符串 memebr
- 在指针的帮助下,文本文件中单词的频率
- 对字符串进行位操作
- 如何根据单词在文本中出现的概率输出单词
- 我可以在 C++ 中的函数体之外进行操作吗?
- MPI突然停止了对多个核心的操作
- 从字符串变量中逐字符读取单词
- 使用std::mt19937从字符串中返回一个随机单词
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 对字符数组中的元素执行逐位操作
- 如何在directx/c++中进行平移/缩放操作
- 如何用for循环在c++中生成单词三角形
- 逐位操作的隐式类型转换
- 将数字转换为单词
- 使用if-else将数字转换为单词
- 为什么一个向量上的多线程操作很慢
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- 从长时间中提取每个单词的钻头操作