眾所周知,計算機是以二進制存儲數據的,不同的數據類型可能存儲不同的格式。比如壹個有符號的整數,最高位是符號位,其余代表數值;那麽如何在計算機中表達呢?我們壹步壹步來說:
比如1+1怎麽表達?
1的二進制表達式為(為方便起見為1字節):00000001。
那麽1+1表示為:0000001+0000001 = 00000010 = 2。
對嗎?沒錯,這麽容易。
2.?然後看下面,2-1怎麽表達?
2的二進制是:0000010。
-1的二進制是100001。
那麽:2-1 = 2+(-1)= 0000010+100001 = 1000011 =-3。
3.?原始代碼是什麽?
維基百科的定義:真實形式是計算機操作的壹個術語,指的是“未被改變的”代碼。比如上面的例子,2的二進制表達式是00000010,0000010就是原碼。
4.什麽是補語?
維基百科的定義:2的補碼(英文:2的補碼)是用二進制表示有符號數的方法。
補碼是根據原始代碼規則計算的:
正數和0的補數:數字本身。
負數的補數:除以最高有效位(即符號位)再加上1得到。
那麽什麽是反轉呢?0變成1,1變成0,就是代碼。
比如-1,原碼是:100001。
第壹步,除去最高有效位,得到:11111110。
第二步:添加1:1111111。
-1的最後壹個補碼是:1111111。
對了,在轉化補語的過程中,還有步驟:逆序。取逆得到的數叫逆碼。
5.什麽是反代碼?
反代碼是計算機中數字的機器代碼表示。對於單個數值(二進制0和1),求逆操作是將0變為1,將1變為0。
逆碼與原碼為正時相同;當數為負數時,反碼為原碼的符號位,其他位逐位反轉。
反碼只是原碼和補碼轉換過程中的壹個過渡操作。知道原碼和補碼
其實我們知道什麽是反代碼,只是抽象了壹下。
6.減法到底是怎麽做的?
說完了原碼,補碼,補碼,還是回到原來的問題。到底什麽才是正確的操作?算錯個位數真可惜。
計算機內部用補碼計算。
壹、首先我們需要把需要計算的東西轉換成補數。
2的原碼是:00000010。由於它是正數,所以它的補數是它本身:0000010。
-1的原代碼為:1000001,其補碼為:1111165438。
二。計算機內部采用補碼加法,統壹了運算規則。比如把2-1看成:2+(-1)。所以2-1實際上是:
00000010 + 11111111 = 00000001 = 1
三。最終計算結果正常,對得起我學過的小學數學。
7.?最終原因:為什麽壹定要補代碼?
當我閱讀和思考時,許多想法通過時鐘周期表達其本質。
我個人理解為公式的變換,相對容易理解。怎麽說呢?讓我們推導下面的公式。
10-8=10+(-8)=10+(-1-8)+1=10+[(-1-8)+1]
過來,我們停下來。這個公式是等價的。我們來看看方括號是不是類似於+1的內部計算。
-1為二進制:1111111,-8的原代碼為:10001008。逆碼是:1110111,(-1-8)高位除法的運算是:1111111-00654438組合高位為:11101111,這是否定的結果,即(-1-8)的結果。
方括號中的本質是[(倒數)+1]=[補數],這就是為什麽可以用補數計算。