2013-10-22 122 views
1
set 0x8675309F, %o1 
sra %o1, 16, %o1 

可有人請解釋應該在這裏做什麼SRA,我知道這是右移運算,但又有什麼在這個指令做完全。我也知道如何將十六進制數字轉換爲十進制數字和從十進制數字轉換爲二進制數字,但有沒有更簡單的方法對十六進制數字進行邏輯門操作?例如,如果我想和或或或XOR兩個十六進制數字,我會怎麼做呢?我知道它是如何完成與二進制,但有沒有辦法做到這一點與十六進制或你需要轉換爲二進制,然後對所述二進制數的邏輯門操作?右移算術和十六進制數

這裏是我的嘗試:答案將是0x8675,所以這就是我所做的(不知道這是否正確)我將十六進制數轉換爲小數,然後從小數轉換爲二進制,這就是我所做的右移操作向右移動16位(或在二進制數的前面添加16個零),然後我再次轉換爲十六進制。問題是,要轉換回十六進制我不得不使用在線轉換器,並從十進制轉換爲二進制我還使用了一個轉換器(因爲數量非常大),問題是,在任何類型的考試我不會能夠使用在線轉換器,那麼解決這個問題的最快方法是什麼?

如何對十六進制數做邏輯門AND或XOR操作,我必須轉換爲二進制還是可以對十六進制數進行邏輯門操作?

回答

1

使用二進制或十六進制或十進制數字格式執行邏輯運算時無關緊要,因爲輸出結果是相同的。但是,如果使用十六進制表示,則可以更容易地讀取源代碼中的二進制值,然後使用十進制進行讀取。 原因是,因爲hexadimzmal有一個基數爲2的倍數的bas,因此您可以很容易地在視覺上識別四位數的二進制十六進制數,而這在十進制格式中並不那麼容易。

作爲一個例子:

3ab9h -> 3  A  B  9 
      0011 1010 1011 0101 

因此,在十六進制每個數字是一個四位二進制,這是很容易處理。

3

十六進制是一個數字的文本格式,而不是數字本身的屬性。因爲這樣的十六進制對於任何機器操作的意義都沒有影響,所以你可能想要在一個數字上執行。

算術右移是一種右移,如果設置了最高有效位(否則爲零),將右移到空騰的高位。這具有保留數量符號的效果。