這是因為計算機在儲存負數時,使用的是它的二進位制補碼
什麼是組合語言組合語言是一種面向機器的低階程式設計語言,以助記符形式表示每一條計算機指令,助記符一般就是表明指令功能的英語單詞或縮寫
yn )+[-X]補•比較法--Booth乘法 補碼校正法雖可行,但是在乘數為負時校正控制比較複雜,實用性差
補碼的兩個核心:1 十進位制數轉換為二進位制補碼1)正整數的補碼與原碼相同2)負整數補碼的求法:先將該負數的絕對值的二進位制數求出來,然後將所有位取反,末尾加 1,不夠位數時左邊補 1 ,比如 -3 絕對值是 3 ,int 型 佔32位,所
所以,補碼就是把數1234在一個字長內,補足為1’0000的數的編碼方式
1xxx補碼(因為浮點數的加減運算都用補碼,雙符號位比單符號位更加利於檢驗,所以雙符號位的補碼形式常用於規格化中)00
105=+1101001(原碼)=0110 1001(補碼)-105=-1101001(原碼)=1001 0111 (補碼)補碼中,+0和-0表示方法是一樣的,都是00000000,而將10000000定義為-128,因此對於8bit的有符
1xxx補碼(因為浮點數的加減運算都用補碼,雙符號位比單符號位更加利於檢驗,所以雙符號位的補碼形式常用於規格化中)00
有的人會問用原碼多好還能直接看出來其實並不然,計算機有時候還並不是那麼智慧的CPU只會加法並不會減法所以才是補碼儲存也就是說CPU只有加法器並沒有減法器我們來看看正數的補碼 和 負數的補碼 相加是不是得到了正確的結果呢
還有 +0 和 -0 的表示,在原碼和反碼都有兩種形式,但是補碼卻只有一種:[+0]=[0000 0000]原=[0000 0000]反=[0000 0000]補[-0]=[1000 0000]原=[1111 1111]反=[0000 00
比平時運動鞋選小一個碼子不太準,因為本人經營匡威店,也在網上賣匡威,匡威是起初按照歐美人的鞋碼設計的,對亞洲人來說,硫化鞋底由於做工特殊通常會偏大一碼,所以聯絡買匡威買小一碼,有什麼疑問可以問我,想買鞋子夜夢聯絡我給你最好的品質,和完美的售
同樣的,在計算機硬體的實現上,也是這樣處理浮點數的加減法的~也就是通常所說的:求階差、對階,尾數相加,結果規格化(這個不知道是啥意思不要緊,只要知道是把得到的結果調整成為官方格式就好)那麼,這就產生了一個問題:如何比較兩個階的大小,以右移小
總結在計算機中資料用補碼錶示,利用補碼統一了符號位與數值位的運算,同時解決了+0、-0問題,將空出來的二進位制原碼1000 0000表示為-128,這也符合自身邏輯意義的完整性
net/m0_37482190/article/details/87218019關於溢位的概念以及判斷方法在微型計算機中,機器數的位數是一定的,所以他能表示的範圍也是一定的,若是在運算過程中超過了表示範圍,就產生了溢位
正數的補碼等於本身,負數的補碼等於反碼+1:例如:X = 0b11 (3),四位元表示原碼 = 0011(3),對應反碼為 = 0011(3) ,補碼為 = 0011(3)
1) 符號位參與運算,除數,被除數,商和餘數均用補碼錶示
其實呢,是因為計算機在計算過程中並不是用我們認識的二進位制來表達運算的
定點除法運算1.原碼比較法和恢復餘數法⑴比較法比較法類似於手工運算,只是為了便於機器操作,將除數右移改為部分餘數左移,每一位的上商直接寫到暫存器的最低位
精華部分來了~浮點數加法浮點數的加法運算(不要問哥為啥只講加法~)分為下面幾個步驟:對階位數求和規格化舍入校驗判斷(1)對階顧名思義就是對齊階碼,使兩數的小數點位置對齊,小階向大階對齊
注意這裡獲取補碼的方式,其過程是:- 00000010B →取絕對值 00000010B →全部位取反 11111101B → +1B 得11111110B歸納:取絕對值 → 取反 → +1這裡我們給“負數補碼”一個定義(非權威定義,僅用於