價值和代表
具有整數類型的項的值是它對應的數學整數。積分類型可以是無符号的(隻能表示非負整數)或有符号(也能表示負整數)。
整數值通常在程序的源代碼中指定為可選的前綴為+或 - 的數字序列。一些編程語言允許其他符号,例如十六進制或八進制。一些編程語言也允許數字組分隔符。
此數據的内部表示形式是值存儲在計算機内存中的方式。與數學整數不同,計算機中的典型數據具有一些最小和最大可能值。
正整數的最常見表示是使用二進制數字系統的一串位。存儲位的存儲器字節的順序是變化的;看到字節序。整數類型的寬度或精度是其表示中的位數。具有n位的整數類型可以編碼2數字;例如,無符号類型通常表示非負值0到2-1。有時使用對位模式的整數值的其他編碼,例如二進制編碼的十進制或格雷碼,或者諸如ASCII的打印字符碼。
在二進制計算系統中有四種衆所周知的方式來表示有符号數。最常見的是二進制補碼,它允許帶有n位的有符号整數類型表示從-2到2-1的數字。二進制補碼算法很方便,因為表示和值之間存在完美的一對一對應關系(特别是沒有單獨的+0和-0),并且因為加法,減法和乘法不需要區分有符号和無符号類型。其他可能性包括偏移二進制,符号幅度和1'補碼。
一些計算機語言以與機器無關的方式定義整數大小;其他人根據底層處理器字大小有不同的定義。并非所有語言實現都定義所有整數大小的變量,并且在特定實現中定義的大小甚至可能不是不同的。一種編程語言中的整數可以是不同語言或不同處理器上的不同大小。
類型
^并非所有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個十進制數字的數字。
布爾或标志類型是一種隻能表示兩個值的類型:0和1,通常分别用false和true标識。這種類型可以使用單個位存儲在存儲器中,但為了方便尋址和訪問速度,通常給出一個完整的字節。
四位數被稱為半字節(當吃東西時,小于咬一口)或者nybble(在字節字節的形式上是雙關語)。一個半字節對應于十六進制中的一個數字,并且以二進制編碼的十進制數保存一個數字或符号代碼。
字節和八位字節
術語字節最初意味着'最小的可尋址存儲單元'。過去,全部使用了5,6,7,8和9位字節。還有一些計算機可以處理單個位(“位尋址機器”),或者隻能處理16位或32位數量(“字尋址機器”)。通常不使用術語字節與位和字尋址機器相關聯。
術語八位字節總是指8位數量。它主要用于計算機網絡領域,其中具有不同字節寬度的計算機可能必須進行通信。
在現代使用中,字節幾乎總是意味着8位,因為所有其他尺寸都已被廢棄;因此字節已成為八位字節的同義詞。
Word
術語“字”用于由特定體系結構的處理器同時處理的一小組位。因此,字的大小是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位計算機上會失敗。
short
與同一台機器上的标準整數相比,短整數可以表示可能占用較少存儲空間的整數,而具有較小的範圍。
在C中,用short表示。它必須至少為16位,并且通常小于标準整數,但這不是必需的。 在Java中,short總是一個16位整數。在Windows API中,數據類型SHORT在所有計算機上定義為16位有符号整數。
常見的短整數大小編輯
Long
長整數可以表示整數,其整數範圍大于或等于同一台機器上标準整數的整數。
在C中,它表示為long。它必須至少為32位,并且可以或可以不大于标準整數。
常見的長整數大小編輯
在C編程語言的C99版本和C ++的C ++ 11版本中,支持long long類型,它具有标準long的最小容量的兩倍。要求C代碼符合以前的C ++标準C ++ 03的編譯器不支持這種類型,因為C ++ 03中不存在long long類型。對于符合ANSI / ISO标準的編譯器,指定範圍的最低要求,即 - (2-1)至2-1(有符号)和0至2-1(無符号),必須得到滿足;但是,允許擴展此範圍。在平台之間交換代碼和數據或進行直接硬件訪問時,這可能是一個問題。因此,有幾組标題提供與平台無關的精确寬度類型。C标準庫提供了stdint.h;這是在C99和C ++ 11中引入的。