Assembly 右移算术和十六进制数

Assembly 右移算术和十六进制数,assembly,hex,sparc,Assembly,Hex,Sparc,有人能解释一下sra在这里应该做什么吗?我知道它是正确的移位算法,但它在这个指令中到底做了什么。我还知道如何将十六进制数转换为十进制数,以及如何将十进制数转换为二进制数,但有没有更简单的方法对十六进制数执行逻辑门操作?比如说,如果我想对两个十六进制数进行和或异或运算,我该怎么做呢?我知道它是如何用二进制实现的,但是有没有办法用十六进制实现,或者你需要转换成二进制,然后对所说的二进制数进行逻辑门操作 这是我的尝试:答案将是0x8675,这就是我所做的(不确定这是否正确)我将十六进制数转换为十进制数

有人能解释一下sra在这里应该做什么吗?我知道它是正确的移位算法,但它在这个指令中到底做了什么。我还知道如何将十六进制数转换为十进制数,以及如何将十进制数转换为二进制数,但有没有更简单的方法对十六进制数执行逻辑门操作?比如说,如果我想对两个十六进制数进行和或异或运算,我该怎么做呢?我知道它是如何用二进制实现的,但是有没有办法用十六进制实现,或者你需要转换成二进制,然后对所说的二进制数进行逻辑门操作

这是我的尝试:答案将是0x8675,这就是我所做的(不确定这是否正确)我将十六进制数转换为十进制数,然后从十进制数转换为二进制数,在这里我做了右移操作,右移16位(或在二进制数的前面加16个零),然后再次转换为十六进制数。问题是,要转换回十六进制,我必须使用在线转换器,而要从十进制转换成二进制,我还使用了转换器(因为数字非常大),问题是,在任何类型的考试中,我都无法使用在线转换器,那么解决此类问题的最快方法是什么


对十六进制数执行逻辑门AND或XOR操作怎么样?我必须转换为二进制还是可以对十六进制数执行逻辑门操作?

十六进制是数字的文本格式,而不是数字本身的属性。因此,十六进制与您可能希望对数字执行的任何机器操作的含义无关


算术右移是一种右移,如果设置了最高有效位(否则为零),则将1移到空出的高位。这具有保留数量符号的效果。

十六进制是数字的文本格式,而不是数字本身的属性。因此,十六进制与您可能希望对数字执行的任何机器操作的含义无关


算术右移是一种右移,如果设置了最高有效位(否则为零),则将1移到空出的高位。这具有保留数量符号的效果。

使用二进制、十六进制或十进制数字格式执行逻辑运算并不重要,因为输出是相同的。然而,如果您使用十六进制表示,它的优点是您可以更容易地读取源代码中的二进制值,然后使用dec。 原因是,因为hexadimzmal有一个bas,它是基数2的倍数,因此您可以很容易地直观地识别一个四位二进制的十六进制数,而这在十进制格式中并不容易

例如:

set 0x8675309F, %o1
sra %o1, 16, %o1

因此,十六进制中的每个数字都是一个四位数的二进制,这很容易处理。

无论是用二进制、十六进制还是十进制数字格式执行逻辑运算,都无关紧要,因为输出都是相同的。然而,如果您使用十六进制表示,它的优点是您可以更容易地读取源代码中的二进制值,然后使用dec。 原因是,因为hexadimzmal有一个bas,它是基数2的倍数,因此您可以很容易地直观地识别一个四位二进制的十六进制数,而这在十进制格式中并不容易

例如:

set 0x8675309F, %o1
sra %o1, 16, %o1
所以十六进制中的每个数字都是一个四位二进制,这很容易处理