複製鏈接
請複製以下鏈接發送給好友

unsigned

鎖定
整型的每一種都分為:無符號(unsigned)和有符號(signed)兩種類型(float和double總是帶符號的),在除char以外的數據類型中,默認情況下聲明的整型變量都是有符號的類型;char在默認情況下總是無符號的。在除char以外的數據類型中,如果需聲明無符號類型的話就需要在類型前加上unsigned。無符號版本和有符號版本的區別就是無符號類型能保存2倍於有符號類型的正整數數據,比如16位系統中一個short能存儲的數據的範圍為-32768~32767,而unsigned能存儲的數據範圍則是0~65535。由於在計算機中,整數是以補碼形式存放的。根據最高位的不同,如果是1,有符號數的話就是負數;如果是無符號數,則都解釋為正數。另外,unsigned若省略後一個關鍵字,大多數編譯器都會認為是unsigned int
中文名
無符號
外文名
unsigned
對    應
signed
類    型
C語言

目錄

unsigned基本介紹

整型的每一種都有無符號(unsigned)和有符號(signed)兩種類型,在默認情況下聲明的整型變量都是有符號的類型(char有點特別),如果需聲明無符號類型的話就需要在類型前加上unsigned。無符號版本和有符號版本的區別就是有符號類型需要使用一個bit來表示數字的正負,比如16位系統中一個int能存儲的數據的範圍為–32768 ~ 32767(16位2進制的最高位作為符號位‘1’為負‘0’為正),而unsigned能存儲的數據範圍則是0~65535(這個最高位不用做符號位,所以是2的16次方,一共65536)。由於在計算機中,整數是以補碼形式存放的。根據最高位的不同,如果是1,有符號數的話就是負數;如果是無符號數,則都解釋為正數。同時在相同位數的情況下,所能表達的整數範圍變大。另外,unsigned若省略後一個關鍵字,大多數編譯器都會認為是unsigned int

unsigned舉例

sql語句中的意義
sql語句中,創建一個數據表
create table user{user_id int unsigned}
當中的unsigned表示,數據項user_id恆為正整數
例如如果tinyint最大是127,那tinyintunsigned最大就可以到 127 * 2
unsigned 屬性只針對整型,而binary屬性只用於char 和varchar
類型
説明
tinyint
非常小的整數
smallint
較小整數
mediumint
中等大小整數
int
標準整數
bigint
較大整數
float
單精度浮點數
double
雙精度浮點數
decimal
一個串的浮點數
每種數值類型的名稱和取值範圍如下表所示
類型説明
取值範圍
tinyint[(m)]
有符號值:-128 到127(- 27 到27 - 1)
無符號值:0到255(0 到28 - 1)1個字節
smallint[(m)]
有符號值:-32768 到32767(- 215 到215 - 1)
無符號值:0到65535(0 到216 - 1)2個字節
mediumint[(m)]
有符號值:-8388608 到8388607(- 223 到223 - 1 )
無符號值:0到16777215(0 到22 4 - 1)3個字節
int[(m)]
有符號值:-2147483648 到2147483647(- 231 到231- 1)
無符號值:0到4294967295(0 到232 - 1)4個字節
bigint[(m)]
有符號值:-9223372036854775808 到9223373036854775807(- 263到263-1)
無符號值:0到18446744073709551615(0到264 – 1) 8個字節
float[(m, d)]
最小非零值:±1.175494351e - 38
double[(m,d)]
最小非零值:±2.2250738585072014e - 308
decimal (m, d)
可變;其值的範圍依賴於m 和d