無符號數和有符號數

2021-08-31 18:40:08 字數 1058 閱讀 8175

人有十個手指頭,習慣了逢十進一,於是十進位製成了生活中的標準。程式的世界只有高低電平兩種狀態,更適合用二進位制來表示,於是二進位製成了程式世界的標準。

對與無符號數來說,我們更喜歡談他們之間的轉化,十進位制是我們最習慣的進製,於是十進位制轉為r進製,r進製轉為十進位制變尤為重要。

十進位制——>r進製(整數部分小數部分分開轉化,取到的第乙個餘或第乙個整最接近小數點)

將十進位制的217轉化為二進位制數(除基取餘法)

所以轉換結果為11011001

將十進位制的0.6875轉化為二進位制數(乘基取整法)

轉化結果為0.1011

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

r進製——>十進位制(多項式代替法)

將二進位制的10111.1101101轉換為十進位制

對與有符號數來說,我們更喜歡談並且才能談這三個:原碼、反碼和補碼。

原碼:符號位用0表示正1表示負,數值位與真值一樣

反碼:符號位用0表示正1表示負,正數時數值位還是真值,負數時數值位是真值的按位取反

補碼:符號位用0表示正1表示負,整數補碼的數值位和真值相同,負數補碼的數值位是真值的按位取反,在最低位加一

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

小技巧:

x的補碼符號位連同數值位變反加一就可以得到-x的補碼

對與反碼、補碼來說,擴充套件的資料位的值和原來的符號位的值是一樣的

有符號數和無符號數

有符號和無符號整數 1.通常情況下,大多數字預設的是有符號數,比如 4,5 要想寫乙個無符號數必須在後面加u 比如 4u,5u 2.在計算機中有符號數是用補碼的形式來表示的,最高位是符號位。無符號數就是正數唄 正數的補碼和原碼相同。比如 1 在計算機中表示為 11111111 11111111 11...

有符號數和無符號數

刷題刷到了有符號數的問題,回顧一下知識點 有符號數 signed 可以區分正負數 最高位表示數值的正負 0表示正數,1表示負數 無符號數 unsigned 不區分正負數 只有整數型別 雖然無符號數所能表示的最大數值大於有符號數,但兩者所能表示的數值範圍相同。eg.short int 128,0 0,...

C 有符號數和無符號數

1.有符號數和無符號數 c支援所有整形資料型別的有符號數和無符號數運算。儘管c標準並沒有指定某種有符號數的表示,但是幾乎所有的機器都使用二進位制補碼。通常,大多數數字預設都使有符號的,c也允許無符號數和有符號數之間的轉換,轉換原則是基本的位表示保持不變。因此在一台二進位制補碼機器上,當從無符號數轉換...