2016-08-25 81 views
0

我有recently learned對於m位x n位乘法(產生(m + n)位乘積),無論乘法是無符號還是有符號,結果的最低有效位總是相同的。無符號和有符號整數的結果是否有相似之處?

對於一個m位/ n位除法(產生一個m位商和一個n位餘數),是否有任何位對於無符號和有符號的除法都是相同的,或一些輸入)這兩種劃分方法產生完全不同的結果嗎?

+0

考慮'1/u -1 = 0'與'1/s -1 = -1',它們是最大不同的。 – harold

回答

2

如果任何操作數具有MSB設置(即爲負數),則無符號和有符號的除法明顯不同。
如果兩個操作數中的MSB都爲零(即兩個數都是正數),結果將是相同的。

使用無符號除法時,操作數中的所有位都被解釋爲無符號數,即負數被解釋爲(非常)大整數。

使用帶符號的除法時,首先將操作數轉換爲絕對值,並重新應用操作數的符號。

結果如下:

mov eax,1 
xor edx,edx  
mov ecx,-1 
div eax,ecx //eax = 0, because the -1 is interpreted as a large positive 
div -1,2  -> $7FFFFFFFF because div 2 shifts bits right by 1. 

數。

mov eax,1 
xor edx,edx //cdq if eax is negative 
mov ecx,-1 
idiv eax,ecx //eax = -1, because 1/-1 = -1. 
idiv -1,2  //-> 0 because 1 shr 1 = 0 and -0 is still 0. 

在一些處理器div(所有正操作數)將是一個週期快於idiv因爲它做的少「思考」。不過,鑑於分裂是一個非常緩慢的操作,無論如何,這無關緊要。

+0

不要忘記在div和idiv前的'cdq'上放置'xor edx,edx'。 (將eax擴展爲edx:eax)。在你的第二個例子中,你寫了'eax'兩次(-1/-1 =>如果你想記住cdq則分割錯誤)。或者在分區更簡單的情況下選擇不同的ISA。或8位分紅('mov ax,-1' /'div cl') –

1

你沒有從前面的問題中學到一個如何做到這一點?回到小學數學,長期分工(無論如何,老/慢(多個時鐘)師的工作)。

讓我們獲取位模式0b10101010/0b101,它是無符號的0xAA/5或有符號的-0x56/-3。我必須作弊並使用我的計算器。但無論如何,很容易一個第一

----------- 
101) 10101010 


     100010 
    ----------- 
101) 10101010 
     101 
     === 
     00101 
      101 
      === 
      00 

所以結果是0×22

但對於符號除法來得到我們需要做的簽名是你會怎麼做手工小學的時候,那麼正確的答案應用該標誌後,所以我們不會將0b101時進爲0b10101010我們,而不是將0b11到0b1010110

 11100 
    --------- 
11) 1010110 
     11 
     === 
     100 
     11 
     === 
     11 
     11 
     == 
      010 

所以答案是爲0x1C餘0X2因爲兩者均爲陰性的結果是積極的。

與添加/減去以及有符號和無符號乘法類似,您會否定或不會進入,否定或不出現某些內容。分工並不像繁殖的地方那樣,只是在轉移後一遍又一遍地增加相同的數字。你從左邊開始,而不是右邊,所以我不知道它會如何在它們之間產生任何共同的模式。以上表明,但也表明,如果你否定一個,你會得到很多普通的位,這可能是愚蠢的運氣。

我不會試圖將位變量abc分成def,不像加法/減法法,而是乘法它不工作就像這就是爲什麼一些處理器的百分比沒有乘法或除法或有些乘法但不除法,你可以通過使用很多邏輯來使乘法速度更快,也可以是多分頻,或者多個時鐘。

也許看黑客高興地看到部門快捷方式,並從這可能會出現一個模式,使一些比例相同,但我對此表示懷疑。你必須得到實際的二進制操作數進入除法邏輯,可能分子中的高位是相同的有符號或無符號,但這意味着它們是兩個完全不同的數字。如上所示,如果您採用具有不同符號表示形式的相同位模式,並將這些相同的位模式饋送到無符號或有符號的分區,則在分子和/或分母中會得到不同的位模式,從而產生不同的結果, 。如果兩個數字都是正數,那麼兩者都應該給出相同的結果。

+0

除數中的符號位是第3位,但您的分紅中的符號位是第8位?這似乎很奇怪。 –

相關問題