快速提問,我正在閱讀Richard C. Detmer編寫的題爲「80x86彙編語言和計算機體系結構導論」的教科書,並且在第21和22頁中討論了什麼是借用的概念,但它並不真正描述它到底是什麼。下面是正文:什麼是十六進制減法的借用? (Assembly)
在計算機中,數字a和b的減法a-b通常通過取b的2的補碼並將結果添加到a中來執行。這對應於添加b的否定。例如,對於小數減法195 - 618 = -423,
00C3 - 026A
被改變爲另外FD96,在2的的026A補體。
00C3 + FD96 = FE59
的十六進制數字表示FE59 -423。看看前面的除了二進制,你有
0000 0000 1100 0011 1111 + 1101 1001 0110 1111 = 1110 0101 1001
注意,有一個在除進位。然而,這種減法確實涉及借用。 A 借用發生在減法a - b時,b大於a的無符號數。計算機硬件可以通過查看相應加法中是否出現進位來檢測減法中的借位。如果在加法中沒有進位,則在減法中有借用。如果在加法中有進位,那麼在減法中沒有借用。 (請記住,「攜帶」本身就意味着「執行」。)
這裏還有一個例子。這樣做的十進制減法985 - 411 = 574使用字長度爲2的補數表示,
03D9 - 019B
更改爲另外的FE65,2的019B的補充。
03D9 + FE65 = 1023E
0000 0011 1101 1001 + 1111 1110 0110 0101 = 1 0000 0010 0011 1110
丟棄額外的1,十六進制數字表示023E 574.該添加有進位,所以在相應的減法中沒有借用。
真的是減法借用?我認爲當例如00C3 - 026A,A大於3時,所以我們必須從相應的C中「借」到B,並且現在使它成爲13(基數16)減A.我們可以這樣做,但是發生了「借用」。在這個特定的例子中,本書的背景中發生了借閱。但是當我們看下一個例子時,他們給了我們03D9 - 019B,B比9大,所以我們必須從D中「借」下來,使它成爲C並且使9 19(基數16)減去B.我們可以這樣做,併發生「借貸」,但該書表示借款沒有發生。
什麼是借用?我知道你知道如果一個運動發生在加法中,但是做了原始減法,那麼真的是一個借用。我什麼時候可以確定是否發生了?
例如,您知道進位是因爲有一個額外的十六進制數字。長度超出了你的兩個十六進制數字的長度(需要保持的長度)。
謝謝。
-Dan
書並不總是100%無錯,即使它們是,它們也可能被錯誤地讀取。借用和攜帶一樣。沒什麼大不了的。 –
@MikeDunlavey那麼爲什麼稱它爲借用?爲什麼不把它稱爲隨身攜帶? –
因爲在小學學習了運用和借的加減法。在計算機中,AB只是A +( - B),所以它首先否定B然後它使用進位來增加,但是你想把它看作減法,這是一個借位.. –