補碼原理理解

2021-09-13 01:18:18 字數 803 閱讀 8606

今天上課靈機一動想到了補碼的原理

補碼是由原碼變換而來,原碼就是帶符號的二進位制數。正數的補碼與原碼一樣,負數的補碼是由原碼取反(除了符號位)後加一得到的。

舉個例子:

正數 1 的原碼為:0000 0001

對應的補碼為:0000 0001

負數 -1 的原碼為:1000 0001

對應的補碼為:1111 1111

補碼自然是有用的,計算機中的加法運算依靠加法器完成,如果要進行減法,重新設計乙個減法器並不理智。而補碼的關鍵作用在於將減法變成了加法。

對於 2 - 1來說,轉換成二進位制便是0000 0010 - 1000 0001,那麼運用補碼就會變成0000 00010 + 1111 1111。意思就是,a - b,等於a + (-b)的補碼。

0000 0010 - 1000 0001 = 0000 0001(原碼的符號位不參與運算)

0000 0010 + 1111 1111 = 0000 0001(計算過程中的進製溢位捨去,補碼的符號位也參與運算)

補碼的原理很簡單,對於乙個二進位制減法0000 0002 - 0000 0001 = 0000 0002 + (1 0000 0000 - 1) = 0000 0002 + 1111 1111這裡將 -1 變成了1 0000 0000 - 1,因為0000 0002只有八位,加上乙個9位的數會溢位,並沒有影響。所以等價於加上負數的補碼。

所以對於乙個n位的負數b來說,補碼的獲取方式實際上是用2^n - b的絕對值。

CSS 原理理解

網頁製作最初,html規定了 normal document stream 標準文件流 來規範元素在網頁中的顯示法則 標準文件流中元素分兩種 塊內元素,行內元素。行內元素的特點 span標籤 豎直margin中的塌陷現象,上下緊密排列的元素的外邊距並不是兩個元素外邊距之和,而是選取那個最大的外邊距作...

Spring IOC原理理解

ioc,inversion of control,控制倒轉。這是spring的核心,貫穿始終。所謂ioc,對於spring框架來說,就是由spring來負責控制物件的生命週期和物件間的關係。di,dependency injection,依賴注入。在系統執行中,動態的向某個物件提供它所需要的其他物件...

ROI Align 原理理解

對背景問題的理解 之前一直在想乙個問題 乙個label在原圖上標記出乙個包含目標的區域。這個框在特徵提取後,大小被縮小到了什麼程度?如果這個label框本身就不大,那麼經過幾層池化之後,是不是在最後的feature map上都沒有乙個位置,能夠對應到這個區域?目標在特徵提取過程中,由於這種深度結構導...