你真的理解補碼嗎?

2021-09-25 06:01:48 字數 1137 閱讀 9372

計算機數值運算的基礎硬體就是加法器,所以我們就從加法器講起。

加法器是計算機數值計算的最基礎硬體單元,加減乘除都是以加法器為基礎實現的。

加法器的構成如下圖所示,其中s是和數,c是進製。

半加器電路是指對兩個輸入資料位相加,輸出乙個結果位和進製,沒有進製輸入的加法器電路。 是實現兩個一位二進位制數的加法運算電路。

加法器解決了加法運算,那麼減法運算該怎麼辦呢?

減去乙個數相當於加上這個數的負數,這樣減法就轉換成了加法。

比如:

0x33 - 0x11  ====>  0x33 + (-0x11)  // 那麼在計算機中怎麼表示-0x11呢?
所以解決減法問題,其實就是解決負數的表示問題,而眾所周知,絕對值相等的兩個正負數之和為0。

假設我們有正數0000 0000 0000 1111,我們如何表示其相反數呢?

一般我們的思路是,找乙個數,跟它相加的結果等於0,但是我們發現,

要找出乙個與它相加後結果等於0的數還是要略加思考一下的,因為要計算進製。

所以,為何不找出乙個與它相加後結果是1111 1111 1111 1111的數1

,然後該數+1(+1溢位,所以相加的和就是0)即是我們所要的答案2

。於是,很容易得出:

0000 0000 0000 1111 

+ 1111 1111 1111 0000 // 先找出相加為1111 1111 1111 1111的數,既是反碼

+ 1 // 然後再加1,既是補碼

= 1111 1111 1111 1111 + 1 = (1)0000 0000 0000 0000

一目了然,補碼1111 1111 1111 0001就是我們想要的答案。

這個應該就是反碼的來歷 ↩︎

這個應該就是補碼的來歷 ↩︎

你真的理解 React Hooks 嗎

react hooks 是在 react 16.8 版本新增的特性,在我看了 react 官網 和一些部落格對 react hook 的講解後還是覺得沒有 get 到本質。大部分的 react hook 的講解都是針對於 react hook 的作用 使用規則 定義規則等。對於新手來說還是覺得會使用...

你真的理解大資料嗎?

大資料很火,已然是一種大勢所趨,是雷軍口中的下乙個吹起豬的風口,是劉強東哥倫比亞大學深造回來的第乙個發展物件。大資料牽動著全國精英的心。然而,你真的理解什麼是大資料嗎?就目前來看,對大資料進行解釋的聲音總體分為兩種,一種是大資料資料量級要大,一般可達到pb級別,有了足量的資料之後,根據資料搭建起乙個...

你真的理解類的使用嗎

在物件導向概念中,類是乙個重要的概念。關於類,我們都很熟悉,都知道類是物件的抽象,類主要用於封裝,繼承等功能。上述知識,如果問起來,每個人可能都能對答如流,然而,在實際寫 的過程中,是否能能做到靈活應用,就很難說了。前幾天,我看自己以前的寫的 發現了乙個在類的封裝方面寫的很爛的場景。具體情況是這樣的...