-
TINYINT
鎖定
在計算機科學中, TINYINT是整數數據類型的數據 ,是表示某種數學整數 範圍的數據類型 。 積分數據類型可以具有不同的大小,並且可以允許或不允許包含負值。 整數通常在計算機中表示為一組二進制數字(位)。 分組的大小各不相同,因此可用的整數大小集在不同類型的計算機之間有所不同。 計算機硬件(包括虛擬機 )幾乎總是提供一種將處理器寄存器或存儲器地址表示為整數的方法。
TINYINT 型的字段如果不設置UNSIGNED類型,存儲-128到127的整數。
- 外文名
- TINYINT
- 目 的
- 數據存儲
- 分 類
- UNSIGNED類型、字段類型
- 範 圍
- 存儲-128到127的整數
TINYINT相關討論
通常,為了節省空間,應該儘可能的使用最小的整型數據。一個TINYINT型數據只佔用一個字節,一個INT型數據佔用四個字節。這看起來似乎差別不大,但是在比較大的表中,字節數的增長是很快的。另一方面,一旦你已經創建了一個字段,要修改它是很困難的。因此,為安全起見,你應該預測一下,一個字段所需要存儲的數值最大有可能是多大,然後選擇適當的數據類型。
TINYINT價值和代表
具有整數類型的項的值是它對應的數學整數。積分類型可以是無符號的(只能表示非負整數)或有符號(也能表示負整數)。
整數值通常在程序的源代碼中指定為可選的前綴為+或 - 的數字序列。一些編程語言允許其他符號,例如十六進制(基數16)或八進制(基數8)。一些編程語言也允許數字組分隔符。
此數據的內部表示形式是值存儲在計算機內存中的方式。與數學整數不同,計算機中的典型數據具有一些最小和最大可能值。
正整數的最常見表示是使用二進制數字系統的一串位。存儲位的存儲器字節的順序是變化的;看到字節序。整數類型的寬度或精度是其表示中的位數。具有n位的整數類型可以編碼2數字;例如,無符號類型通常表示非負值0到2-1。有時使用對位模式的整數值的其他編碼,例如二進制編碼的十進制或格雷碼,或者諸如ASCII的打印字符碼。
在二進制計算系統中有四種眾所周知的方式來表示有符號數。最常見的是二進制補碼,它允許帶有n位的有符號整數類型表示從-2到2-1的數字。二進制補碼算法很方便,因為表示和值之間存在完美的一對一對應關係(特別是沒有單獨的+0和-0),並且因為加法,減法和乘法不需要區分有符號和無符號類型。其他可能性包括偏移二進制,符號幅度和1'補碼。
一些計算機語言以與機器無關的方式定義整數大小;其他人根據底層處理器字大小有不同的定義。並非所有語言實現都定義所有整數大小的變量,並且在特定實現中定義的大小甚至可能不是不同的。一種編程語言中的整數可以是不同語言或不同處理器上的不同大小
[1]
。
TINYINT積分數據類型
位 | 名稱 | 範圍(假設已簽名的兩個補碼) | 十進制數字 | 用途 | 實現 | |||||
---|---|---|---|---|---|---|---|---|---|---|
C/C ++ | Java的 | |||||||||
4 | 簽名:從-8到7,從 - (2)到2- 1 | 1 | 二進制編碼的十進制,單個十進制數字表示 | N / A | N / A | N / A | N / A | N / A | N / A | |
無符號:從0到15,等於2- 1 | 2 | |||||||||
8 | 簽名:從-128到127,從 - (2)到2- 1 | 3 | int8_t,char | 為sbyte | Shortint | 字節 | TINYINT | 整數(1) | ||
無符號:從0到255,等於2- 1 | 3 | uint8_t,char | 字節 | 字節 | N / A | unsigned tinyint | N / A | |||
16 | 半字,字,短 | 簽名:從-32,768到32,767,從 - (2)到2- 1 | 五 | int16_t,short,int | 短 | SMALLINT | 短 | SMALLINT | 整數(2) | |
無符號:從0到65,535,等於2- 1 | 五 | uint16_t,unsigned,unsigned int | USHORT | 字 | char | unsigned smallint | N / A | |||
32 | 單詞,長,雙字,長字,整數 | 簽署:從-2,147,483,648到2,147,483,647,從 - (2)到2- 1 | 10 | int32_t,int,long | INT | LongInt;整數 | INT | INT | 整數(4) | |
無符號:從0到4,294,967,295,等於2- 1 | 10 | uint32_t,unsigned,unsigned int,unsigned long | UINT | LongWord;DWord;紅衣主教 | N / A | unsigned int | N / A | |||
64 | word,doubleword,longword,long long,quad,quadword,qword,int64 | 簽署:從-9,223,372,036,854,775,808到9,223,372,036,854,775,807,從 - (2)到2- 1 | 19 | 時間(自Unix紀元以來的毫秒數),64位計算中的指針 | int64_t,long,long long | 長 | Int64的 | 長 | BIGINT | 整數(8) |
無符號:從0到18,446,744,073,709,551,615,等於2- 1 | 20 | uint64_t,unsigned long long | ULONG | UInt64;四字 | N / A | unsigned bigint | N / A | |||
128 | 八字,雙四字 | 簽署:從-170,141,183,460,469,231,731,687,303,715,884,105,728到170,141,183,460,469,231,731,687,303,715,884,105,727,從 - (2)到2- 1 | 39 | 複雜的科學計算, | C:僅作為非標準編譯器特定擴展提供 | N / A | N / A | N / A | N / A | 整數(16) |
無符號:從0到340,282,366,920,938,463,463,374,607,431,768,211,455,等於2- 1 | 39 | N / A | ||||||||
ñ | n位整數 (一般情況) | 簽名:- (2)到(2- 1) | ⌈(n- 1)log 102⌉ | Ada:範圍-2 **(n-1).. 2 **(n-1)-1 | ||||||
無符號:0到(2- 1) | ⌈nlog102⌉ | Ada:範圍0..2 ** n-1,mod 2 ** n;標準庫或第三方任意算術庫'許多語言中的BigDecimal或Decimal類,如Python,C ++等。 |
- ^並非所有SQL方言都具有無符號數據類型。
- C / C ++中char,short,int,long和long long的大小取決於語言的實現。
- Delphi的整數和紅衣主教的大小無法保證,因平台而異;通常分別定義為LongInt和LongWord。
- ^Java不直接支持對char類型的算術。結果必須從int轉換回char。
不同的CPU支持不同的整數數據類型。通常,硬件將支持有符號和無符號類型,但只支持一小組固定寬度。
上表列出了常見處理器在硬件中支持的整體類型寬度。高級編程語言提供了更多可能性。通常有一個“雙寬度”整數類型,其位數是最大硬件支持類型的兩倍。許多語言也有位字段類型(指定的位數,通常限制為小於最大硬件支持的寬度)和範圍類型(只能表示指定範圍內的整數)。
一些語言,如Lisp,Smalltalk,REXX,Haskell,Python和Perl 6支持任意精度整數(也稱為無限精度整數或bignums)。其他不支持此概念作為頂級構造的語言可能有可用於使用較小變量數組表示非常大的數字的庫,例如Java的BigInteger類或Perl 5的“bigint”包。它們使用盡可能多的計算機內存來存儲數字;但是,計算機只有有限的存儲量,因此它們也只能表示數學整數的有限子集。這些方案支持非常大的數字,例如,一千字節的內存可用於存儲長達2466個十進制數字的數字。
四位數被稱為半字節(當吃東西時,小於咬一口)或者nybble(在字節字節的形式上是雙關語)。一個半字節對應於十六進制中的一個數字,並且以二進制編碼的十進制數保存一個數字或符號代碼。
字節和八位字節
主要文章:字節
術語字節最初意味着'最小的可尋址存儲單元'。過去,全部使用了5,6,7,8和9位字節。還有一些計算機可以處理單個位(“位尋址機器”),或者只能處理16位或32位數量(“字尋址機器”)。通常不使用術語字節與位和字尋址機器相關聯。
術語八位字節總是指8位數量。它主要用於計算機網絡領域,其中具有不同字節寬度的計算機可能必須進行通信。
在現代使用中,字節幾乎總是意味着8位,因為所有其他尺寸都已被廢棄;因此字節已成為八位字節的同義詞。
TINYINTWord
術語“字”用於由特定體系結構的處理器同時處理的一小組位。因此,字的大小是CPU特定的。已經使用了許多不同的字大小,包括6,8,14,16,18,24,32,36,39,40,48,60和64位。由於它是體系結構的,因此字的大小通常由系列中的第一個CPU設置,而不是後來兼容的CPU的特性。從單詞派生的術語的含義,例如長字,雙字,四字和半字,也隨CPU和OS而變化。
實際上所有新的桌面處理器都能夠使用64位字,儘管8位和16位字大小的嵌入式處理器仍然很常見。36位字長在計算機早期很常見。
軟件不可移植性的一個重要原因是錯誤地假設所有計算機具有與程序員使用的計算機相同的字大小。例如,如果使用C語言的程序員錯誤地將int用於存儲大於2-1的值的變量聲明為int,則程序將在具有16位整數的計算機上失敗。該變量應該被聲明為long,在任何計算機上至少有32位。程序員也可能錯誤地認為指針可以轉換為整數而不會丟失信息,這可能適用於(某些)32位計算機,但在具有64位指針和32位整數的64位計算機上會失敗。
短整數
與同一台機器上的標準整數相比,短整數可以表示可能佔用較少存儲空間的整數,而具有較小的範圍。
在C中,用short表示。它必須至少為16位,並且通常小於標準整數,但這不是必需的。在Java中,short總是一個16位整數。在Windows API中,數據類型SHORT在所有計算機上定義為16位有符號整數。
常見的短整數大小
數據類型名稱 | 符號類型 | 以字節存儲 | 最低價值 | 最大價值 | ||
---|---|---|---|---|---|---|
C和C ++ | 常見的實現 | 短 | 籤 | 2 | -32,767 | +32,767 |
未簽約的短片 | 無符號 | 2 | 0 | 65,535 | ||
.NET CLR / CTS | 短 | 籤 | 2 | -32,768 | +32,767 | |
USHORT | 無符號 | 2 | 0 | 65,535 | ||
Java的 | 短 | 籤 | 2 | -32,768 | +32,767 |
long整數編輯
常見的長整數大小
批准類型 | 數據類型名稱 | 以字節存儲 | 簽名範圍 | 無符號範圍 | ||
---|---|---|---|---|---|---|
CISO / ANSI C99 | 國際標準 | Unix,16/32位系統 Windows,16/32/64位系統 | 長 | 4 (最低要求4) | -2,147,483,647至+2,147,483,647 | 0到4,294,967,295 (最低要求) |
CISO / ANSI C99 | 國際標準 | Unix, 64位系統 | 長 | 8 (最低要求4) | -9,223,372,036,854,775,807至+ 9,223,372,036,854,775,807 | 0至18,446,744,073,709,551,615 |
C ++ISO / ANSI | 國際標準 | 16/32位系統 | 長 | 4 (最低要求4) | -2,147,483,648至+2,147,483,647 | 0到4,294,967,295 (最低要求) |
C ++ / CLI | 國際標準 ECMA-372 | 16/32位系統 | 長 | 4 (最低要求4) | -2,147,483,648至+2,147,483,647 | 0到4,294,967,295 (最低要求) |
公司標準 | 視窗 | 長 | 4 | -2,147,483,648至+2,147,483,647 | N / A | |
公司標準 | Windows,Mac OS X. | 長 | 4 | -2,147,483,648至+2,147,483,647 | N / A | |
SQL Server | 公司標準 | 視窗 | BigInt有 | 8 | -9,223,372,036,854,775,808至+ 9,223,372,036,854,775,807 | 0至18,446,744,073,709,551,615 |
ECMA國際標準 | Microsoft .NET | long或Int64 | 8 | -9,223,372,036,854,775,808至+ 9,223,372,036,854,775,807 | 0至18,446,744,073,709,551,615 | |
Java的 | 國際/公司標準 | 長 | 8 | -9,223,372,036,854,775,808至+ 9,223,372,036,854,775,807 | N / A | |
? | Int64的 | 8 | -9,223,372,036,854,775,808至+ 9,223,372,036,854,775,807 | 0到18,446,744,073,709,551,615(Qword類型) |