C語言高階剖析 2 有符號數與無符號數

2021-09-28 19:00:55 字數 1034 閱讀 7922

乙個資料在計算機中儲存是以01方式儲存的,怎麼表示有符號與無符號呢,很簡單,資料型別的最高位用於標識資料的符號

在計算機內部用補碼表示有符號數

舉例說明:

8位整數5的補碼為:0000 0101

8位整數-7的補碼為:1111 1001

16位整數20的補碼為:0000 0000 0001 0100

16位整數-13的補碼為:1111 1111 1111 0011

在計算機內部用原碼表示無符號數

對於固定長度的無符號數

signed 表示有符號數,unsigned 表示無符號數,c語言中預設是有符號數,當表示無符號數時,需要用 unsigned 修飾

!!注意:c語言中只有整數型別能夠宣告為 unsigned 變數。

#include

intmain()

1、有符號數遇見無符號數先看乙個例子

#include

intmain()

else

return0;

}

在這裡,有符號數遇見無符號數,變為無符號數了。

結論:當無符號數與有符號數混合計算時,會將有符號數轉換為無符號數後再進行計算,結果為無符號數

2、錯誤的使用unsigned

直接看**

#include

intmain()

return0;

}

看似應該列印 9 到 0 的所有數字,實際執行,發現是死迴圈,迴圈結束的條件是 i < 0,由於 i 是無符號數,永遠不可能小於 0。

有符號數與無符號數

關於有符號數和無符號數的一些重要知識點,包括它們在記憶體中的儲存方式 互相轉換 越界計算等。大家肯定都知道,對於有符號數,資料型別的最高位用於標示資料的符號,最高位為1表示負數,最高位為0表示正數,那麼今天我們主要就此討論乙個問題 在計算機內部具體是如何表示有符號數呢?在計算機內部是通過補碼的方式來...

C語言中的有符號數與無符號數

1.c語言支援所有整型資料型別的有符號和無符號運算,儘管c語言標準並沒有指定用哪種方式來表示有符號整數,但是幾乎所有的 機器都使用補碼。2.c 語言中預設的整形資料是有符號的,並且允許無符號數和有符號數之間進行轉換。轉換的原則是底層的位保持不變。3.執行運算時,如果乙個運算數是有符號的而另乙個是無符...

第2課 有符號數與無符號數

有符號整型有正數和負數,那在記憶體中是如何區分它們的呢?最高位用來標識資料的正負。有符號數的符號位 1 include 2 3int main 4在計算機內部用補碼表示有符號整型 舉例 char型整數5的補碼 0000 0101 char型整數 7的補碼 0000 0111 1111 1000 11...