首先,注意到,計算機運算的物件只能是二進位制,它並不區分正負數,或者說它總是把二進位制看作正數。所以我們總是要先把整數表示成二進位制,計算機才可以進行運算。
既然計算機它總是把二進位制看作正數,那麼我們如何表示負數?
答案就是,我們自己規定了一套規則把負數轉化成二進位制。這個規則就是,使用一個數的補碼錶示這個數的負數。
補碼:如果兩個二進位制的和是2^w,則我們稱之為互為補碼。(w是整數的二進位制位數)
因為這樣的規定,減法運算實際上變成了取補運算。
下面是證明:
那麼為什麼,要這麼規定呢?因為這麼規定是可以得到正確的結果的,這他媽不是廢話嗎,別急,下面我們來看看到底怎麼得到正確結果的。
假設一個數x,它的負數是y,我們只要能證明,透過使用補碼能計算得到x + y = 0,那麼我們就證明了補碼運算的正確。
證明:
因為,根據規定,負數的二進位制就是正數的補碼,
所以可以得到y = 2^w - x。
那麼,x + y = x + 2^w - x = 2^w。(結果並不是0啊,別急接著往下證明)
又因為,w位的二進位制,2^w是表示不了的,因為它是w+1位的二進位制,1後面跟w個0,這種情況下計算機會捨棄最高位,只保留低w位,2^w的低w位就是0。
所以,x + y = 0。
綜上,補碼正確性得到證明。
首先,注意到,計算機運算的物件只能是二進位制,它並不區分正負數,或者說它總是把二進位制看作正數。所以我們總是要先把整數表示成二進位制,計算機才可以進行運算。
既然計算機它總是把二進位制看作正數,那麼我們如何表示負數?
答案就是,我們自己規定了一套規則把負數轉化成二進位制。這個規則就是,使用一個數的補碼錶示這個數的負數。
補碼:如果兩個二進位制的和是2^w,則我們稱之為互為補碼。(w是整數的二進位制位數)
因為這樣的規定,減法運算實際上變成了取補運算。
下面是證明:
那麼為什麼,要這麼規定呢?因為這麼規定是可以得到正確的結果的,這他媽不是廢話嗎,別急,下面我們來看看到底怎麼得到正確結果的。
假設一個數x,它的負數是y,我們只要能證明,透過使用補碼能計算得到x + y = 0,那麼我們就證明了補碼運算的正確。
證明:
因為,根據規定,負數的二進位制就是正數的補碼,
所以可以得到y = 2^w - x。
那麼,x + y = x + 2^w - x = 2^w。(結果並不是0啊,別急接著往下證明)
又因為,w位的二進位制,2^w是表示不了的,因為它是w+1位的二進位制,1後面跟w個0,這種情況下計算機會捨棄最高位,只保留低w位,2^w的低w位就是0。
所以,x + y = 0。
綜上,補碼正確性得到證明。