無符號數和有符號數

人有十個手指頭,習慣了逢十進一,於是十進制成了生活中的標準。程序的世界只有高低電平兩種狀態,更適合用二進制來表示,於是二進制成了程序世界的標準。
對與無符號數來說,我們更喜歡談他們之間的轉化,十進制是我們最習慣的進制,於是十進制轉爲R進制,R進制轉爲十進制變尤爲重要。

無符號數

十進制——>R進制(整數部分小數部分分開轉化,取到的第一個餘或第一個整最接近小數點)
將十進制的217轉化爲二進制數(除基取餘法)
在這裏插入圖片描述
所以轉換結果爲11011001

將十進制的0.6875轉化爲二進制數(乘基取整法)
在這裏插入圖片描述
轉化結果爲0.1011

所以217.6875轉成二進制是多少你知道了嗎?

R進制——>十進制(多項式代替法)
將二進制的10111.1101101轉換爲十進制
在這裏插入圖片描述

有符號數

對與有符號數來說,我們更喜歡談並且才能談這三個:原碼、反碼和補碼。
原碼:符號位用0表示正1表示負,數值位與真值一樣
反碼:符號位用0表示正1表示負,正數時數值位還是真值,負數時數值位是真值的按位取反
補碼:符號位用0表示正1表示負,整數補碼的數值位和真值相同,負數補碼的數值位是真值的按位取反,在最低位加一

運算:原碼運算複雜,首先需要判斷是否同號,並且零的表示有兩種。反碼零的表示也有兩種,運算時符號位與數值位一同進行運算。當符號位出現進位時,需要將進位加到運算結果的最低位,才能得到最後結果。而補碼中0的表示只有一種,加法計算的規律也和無符號數一樣。

小技巧:
X的補碼符號位連同數值位變反加一就可以得到-X的補碼
對與反碼、補碼來說,擴展的數據位的值和原來的符號位的值是一樣的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章