① 計算機中有哪些數字編碼
電腦中的數字編碼稱為二進制。不管是字元編碼還是漢字編碼,在電腦里都是用二進制數字方式存儲的。
由於電路的復雜性因素,電腦中都使用二進制數,只有0和1兩個數碼,逢二進一,最容易用電路來表達,比如0代表電路不通,1代表電路通暢。我們平時用電腦時感覺不到它是在用二進制計算是因為電腦會把你輸入的信息自動轉換成二進制,算出的二進制數再轉換成你能看到的信息顯示到屏幕上。
一、ASCII碼。
美國信息交換標准碼是由美國國家標准學會(American National Standard Institute,ANSI)制定的,標準的單位元組字元編碼方案,用於基於文本的數據。起始於50年代後期,在1967年定案。它最初是美國國家標准,供不同計算機在相互通信時用作共同遵守的西文字元編碼標准,它已被國際標准化組織(ISO)定為國際標准,稱為ISO646標准。適用於所有拉丁文字字母。
ASCII碼使用指定的7位或8位二進制數組合來表示128或256種可能的字元。標准ASCII碼也叫基礎ASCII碼,使用7位二進制數來表示所有的大寫和小寫字母,數字0到9、標點符號,以及在美式英語中使用的特殊控制字元(這里需要特別注意:ASCII碼與標准ASCII碼的位數上的區分,標准ASCII碼是7位二進製表示)。在電腦里,數字和字母都是用ASCII碼來存儲的,這就是為什麼一個英文字母或半形的數字、標點符號通常佔一個位元組的原因。
二、漢字編碼。
電腦內部漢字信息的存儲運算的代碼有四種:輸入碼、國標碼、內碼和字型碼。
輸入碼:包括拼音編碼和字型編碼。微軟拼音ABC就是拼音編碼,五筆字型輸入法就是字型編碼。
國標碼:又稱為漢字交換碼,在計算機之間交換信息用。用兩個位元組來表示,每個位元組的最高位均為0,因此可以表示的漢字數為2的14次冪,就是16384個。將漢字區位碼的高位位元組、低位位元組各加十進制數32(即十六進制數的20),便得到國標碼。例如「中」字的國標碼為8680(十進制)或7468(十六進制)。
內碼:漢字內碼是在設備和信息處理系統內部存儲、處理、傳輸漢字用的代碼。無論使用何種輸入碼,進入計算機後就立即被轉換為機內碼。規則是將國標碼的高位位元組、低位位元組各自加上128(十進制)或80(十六進制)。例如,「中」字的內碼以十六進製表示時應為F4E8。這樣做的目的是使漢字內碼區別於西文的ASCII,因為每個西文字母的ASCII的高位均為0,而漢字內碼的每個位元組的高位均為1。
字型碼:表示漢字字形的字模數據,因此也稱為字模碼,是漢字的輸出形式。通常用點陣、矢量函數等表示。用點陣表示時,字形碼指的就是這個漢字字形點陣的代碼。根據輸出漢字的要求不同,點陣的多少也不同。簡易型漢字為16′16點陣、提高型漢字為24′24點陣、48′48點陣等。如果是24′24點陣,每行24個點就是24個二進制位,存儲一行代碼需要3個位元組。那麼,24行共佔用3′24=72個位元組。計算公式:每行點數/8′行數。依此,對於48′48的點陣,一個漢字字形需要佔用的存儲空間為48/8′48=6′48=288個位元組。
② 最常用的數值數據類型有哪些
一、 整數數據類型:整數數據類型是最常用的數據類型之一。
1、INT (INTEGER)
INT (或INTEGER)數據類型存儲從-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之間的所有正負整數。每個INT 類型的數據按4 個位元組存儲,其中1 位表示整數值的正負號,其它31 位表示整數值的長度和大小。
2、SMALLINT
SMALLINT 數據類型存儲從-2的15次方( -32, 768) 到2的15次方-1( 32 ,767 )之間的所有正負整數。每個SMALLINT 類型的數據佔用2 個位元組的存儲空間,其中1 位表示整數值的正負號,其它15 位表示整數值的長度和大小。
二、 浮點數據類型:浮點數據類型用於存儲十進制小數。浮點數值的數據在SQL Server 中採用上舍入(Round up 或稱為只入不舍)方式進行存儲。
1、REAL 數據類型
REAL數據類型可精確到第7 位小數,其范圍為從-3.40E -38 到3.40E +38。 每個REAL類型的數據佔用4 個位元組的存儲空間。
2、FLOAT
FLOAT數據類型可精確到第15 位小數,其范圍為從-1.79E -308 到1.79E +308。 每個FLOAT 類型的數據佔用8 個位元組的存儲空間。 FLOAT數據類型可寫為FLOAT[ n ]的形式。n 指定FLOAT 數據的精度。n 為1到15 之間的整數值。
當n 取1 到7 時,實際上是定義了一個REAL 類型的數據,系統用4 個位元組存儲它;當n 取8 到15 時,系統認為其是FLOAT 類型,用8 個位元組存儲它。
三、 二進制數據類型
1、BINARY
BINARY 數據類型用於存儲二進制數據。其定義形式為BINARY( n), n 表示數據的長度,取值為1 到8000 。在使用時必須指定BINARY 類型數據的大小,至少應為1 個位元組。BINARY 類型數據佔用n+4 個位元組的存儲空間。
在輸入數據時必須在數據前加上字元「0X」 作為二進制標識,如:要輸入「abc 」則應輸入「0xabc 」。若輸入的數據過長將會截掉其超出部分。若輸入的數據位數為奇數,則會在起始符號「0X 」後添加一個0,如上述的「0xabc 」會被系統自動變為「0x0abc」。
2、VARBINARY
VARBINARY數據類型的定義形式為VARBINARY(n)。 它與BINARY 類型相似,n 的取值也為1 到8000, 若輸入的數據過長,將會截掉其超出部分。
不同的是VARBINARY數據類型具有變動長度的特性,因為VARBINARY數據類型的存儲長度為實際數值長度+4個位元組。當BINARY數據類型允許NULL 值時,將被視為VARBINARY數據類型。
四、 邏輯數據類型
BIT: BIT數據類型佔用1 個位元組的存儲空間,其值為0 或1 。如果輸入0 或1 以外的值,將被視為1。 BIT 類型不能定義為NULL 值(所謂NULL 值是指空值或無意義的值)。
五、 字元數據類型:字元數據類型是使用最多的數據類型。它可以用來存儲各種字母、數字元號、特殊符號。一般情況下,使用字元類型數據時須在其前後加上單引號』或雙引號」 。
CHAR 數據類型的定義形式為CHAR[ (n) ]。 以CHAR 類型存儲的每個字元和符號佔一個位元組的存儲空間。n 表示所有字元所佔的存儲空間,n 的取值為1 到8000, 即可容納8000 個ANSI 字元。
若不指定n 值,則系統默認值為1。 若輸入數據的字元數小於n,則系統自動在其後添加空格來填滿設定好的空間。若輸入的數據過長,將會截掉其超出部分。
③ 數據編碼的常見編碼
常見的數據編碼方案有:單極性碼、極性碼、雙極性碼、歸零碼、雙相碼、不歸零碼、曼徹斯特編碼、差分曼徹斯特編碼、多電平編碼、4B/5B編碼。
單極性碼:在這種編碼方案中,只適用正的(或負的)電壓表示數據。單極性碼用在電傳打字機介面以及PC機和TTY兼容的介面中,這種代碼需要單獨的時鍾信號配合族悉攜定時,否則當傳送一長串0或1時,發送機和接收機的時鍾將無法定時,單極性碼的抗雜訊特性也不好。
極性碼:在這種編碼中,分別用正和負電壓表示二進制數「0」和「1」。這種代碼的電平差比單極碼大,因而抗干擾特性好,但仍需另外的時鍾信號。
雙極性碼:信號在三個電平(正、負、零)之間變化。一種典型的雙極性碼就是信號反轉交替編碼(AMI)。在AMI信號中,數據流遇到「1」時使電平在正和負之間交替翻轉,而遇到「0」時則保持零電平。
歸零碼:(Return to Zero,RZ)碼元中間信號回歸到零電平,比如從正電平到零電平的轉換表示碼元「0」,而從負電平到零電平表示碼元「1」。
雙相碼:雙相碼要求每一位中都要有一個電平轉換。因而這種代碼的最大優點是自定時,同時雙相碼也有檢測錯誤的功能,如果某一位中間缺少了電平翻轉,則被認為是違例代碼。
非歸零電平編碼(Non-Return to Zero Level,NRZ-L):不使用0電平陸升,用正電平表示「0」,負電平表示「1」。
非歸零反相編碼(Non-Return to Zero Inverted,NRZ-I):當「1」出現時電平翻轉,當「0」出現時電平不翻轉。這種代碼也叫差分碼。
曼徹斯特碼(Manchester):高電平到低電平的轉換邊表示0,低電平到高電平的轉換邊表示1,位中間的電平轉換邊既表示數據代碼,也作定時信號使用。曼徹斯特編碼用在乙太網中。
差分曼徹斯特碼(Differential Manchester):也叫做相位編碼(兆伏PE);常用於區域網傳輸。在曼徹斯特編碼中,每一位的中間有一跳變,「0」表示位的開頭有跳變,「1」表示位的開頭沒有跳變,位中間的跳變既作時鍾信號,又作數據信號。
多電平編碼:碼元可取多個電平之一,每個碼元可代表幾個二進制位。
4B/5B編碼:百兆位快速乙太網的光纖分布式數據介面(FDDI,Fiber Distributed Data Interface)中採用的信息編碼方案。這種編碼的特點是將欲發送的數據流每4bit作為一個組,每四位二進制代碼由5位編碼表示,這5位編碼稱為編碼組(code group),並且由NRZI方式傳輸。