乙個資料在計算機中儲存是以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...