A. 怎麼求補碼的原碼
已知一個數的補碼,求原碼的操作其實就是對該補碼再求補碼:
1、如果補碼的符號位為「0」,表示是一個正數,其原碼就是補碼。
2、如果補碼的符號位為「1」,表示是一個負數,那麼求給定的這個補碼的補碼就是要求的原碼。
例如:已知一個補碼為11111001,則原碼是10000111(-7)。因為符號位為「1」,表示是一個負數,所以該位不變,仍為「1」。
其餘七位1111001取反後為0000110;再加1,所以是10000111。
數的表示:
在數的表示上通過人為的定義來消除編碼映射的不唯一性,對轉換後的10000000強制認定為-128。當然對原碼和反碼也可以做這種強制認定,那為什麼原碼和反碼沒有流行起來?原碼和反碼沒有流行起來,是因為在數的運算上對符號位的處理無法用當時已有的機器物理設計來實現。
由於原碼和反碼在編碼時採用了硬性的人工設計,這種設計在數理上無法自動的通過模來實現對符號位的自動處理,符號位必須人工處理,必須對機器加入新的物理部件來專門處理符號位,這加大了機器設計難度,加大的機器成本,不到萬不得已,不走這條路。
網路--補碼
B. 正數的補碼等於原碼是如何算出來的
這是規定。
補碼是為負數想出來的辦法,目的是減法可以用加補碼的方法實現,補碼可用反碼加1得來,於是又有了負數的反碼。
計算機里有硬體「加法器」,有了補碼,減法也可以用加法器做了,計算機里運算速度硬體遠快於軟體,這就是反碼,補碼和原碼多樣化的原因。
(2)正數的補碼咋化成源碼擴展閱讀:
原碼求補碼
正數
正整數的補碼是其二進製表示,與原碼相同 。
例:+9的補碼是00001001。(備註:這個+9的補碼是用8位2進制來表示的,補碼表示方式很多,還有16位二進制補碼表示形式,以及32位二進制補碼表示形式,64位進制補碼表示形式等。)
負數
求負整數的補碼,將其原碼除符號位外的所有位取反(0變1,1變0,符號位為1不變)後加1。
C. 原碼與補碼的轉換
1、首先要知道,換算規則:原碼轉換為反碼:符號位不變,數值位分別「按位取反」 。