Ⅰ 計算機中編碼的目的
信息編碼的目的在於為計算機中的數據與實際處理的信息之間建立聯系,提高信息處理的效率。
Ⅱ 數據編碼技術 什麼是數據編碼技術
數字數據編碼:在數字信道中傳輸計算機數據時,要對計算機中的數字信號重新編碼進行基帶傳輸,在基帶傳輸中,數字信號的變法方式主要有不歸零編碼、曼徹斯特編碼、差分曼徹斯特編碼三種方法
模擬數據編碼:將計算機中的數字數據在網路中用模擬信號表示,要進行調制,也就是要進行波行變換,或者嚴格地講,是進行頻譜變換,將數字信號的頻譜變換成適合於在模擬信道中傳輸的頻譜。基本的調制方法有調幅、調頻、調相三種方法。
功能:求出所有參數的算術平均值。 使
Ⅲ 什麼是編碼計算機中常用的信息編碼有哪幾種
用預先規定的方法將文字、數字或其他對象編成數碼,或將信息、數據轉換成規定的電脈沖信號。編碼在電子計算機、電視、遙控和通訊等方面廣泛使用。編碼是信息從一種形式或格式轉換為另一種形式的過程。解碼,是編碼的逆過程。
Ⅳ 計算機編碼是什麼
計算機編碼是信息從一種形式或格式轉換為另一種形式的過程,也稱為計算機編程語言的代碼,簡稱編碼;編碼在電子計算機、電視、遙控和通訊等方面廣泛使用;編碼是信息從一種形式或格式轉換為另一種形式的過程;解碼是編碼的逆過程。
Ⅳ 計算機中編碼的目的和意義
計算機(computer)俗稱電腦,是現代一種用於高速計算的電子計算機器,可以進行數值計算,又可以進行邏輯計算,還具有存儲記憶功能。是能夠按照程序運行,自動、高速處理海量數據的現代化智能電子設備。由硬體系統和軟體系統所組成,沒有安裝任何軟體的計算機稱為裸機。可分為超級計算機、工業控制計算機、網路計算機、個人計算機、嵌入式計算機五類,較先進的計算機有生物計算機、光子計算機、量子計算機等。
計算機發明者約翰·馮·諾依曼。計算機是20世紀最先進的科學技術發明之一,對人類的生產活動和社會活動產生了極其重要的影響,並以強大的生命力飛速發展。它的應用領域從最初的軍事科研應用擴展到社會的各個領域,已形成了規模巨大的計算機產業,帶動了全球范圍的技術進步,由此引發了深刻的社會變革,計算機已遍及一般學校、企事業單位,進入尋常百姓家,成為信息社會中必不可少的工具。
Ⅵ 為什麼需要對計算機中的信息進行編碼
為了人能讀懂的東西
讓計算機也能讀懂
字元編碼:
比如'A'
這個字元
人理解
為
字元A
存入計算機時,
被編碼成65這個數值,
當A被存入計算機時,
其實被存入的是65這個值,
當你想從計算機裡面取出A這個字元的時候,
剛取出的時候
是
65
通過一系列程序運算,
最後顯示到屏幕上的
是A這個字元,
最終人能看得懂
'A'
轉換為
65
這個過程,
叫做
'編碼'
作用是為了讓計算機能存儲人類的信息
65
轉換成
'A'
這個字元的過程叫做
'解碼'
作用是為了讓人類能理解計算機存放的信息
Ⅶ 計算機中的數據和編碼
計算機編碼
在計算機用戶中普遍存在的一個誤解是計算機對數值計算的絕對准確性。也就是說,如果您做乘法:
3 × (1/3)
您本來期望的到一個准確的1這個結果。但是您發現計算機並沒有給出這個結果,而卻只是一個近似的值,類似於0.99999999923475。
這看起來似乎是系統的一個「臭蟲」,但是更令人吃驚的是,對,計算機就是那樣工作的(除了在計算機代數系統中)。這篇文章將詳細解釋這個問題。
位、位元組、半位元組和無符號整數
幾乎所有的計算機用戶都了解「 位 」的概念。在計算機中,通過開關變化設置表達值0或1。如果您有兩個位可供選擇,您可以很容易得到這樣四個不同的狀態:
00 01 10 11
如果您有三個位,您可以把它們表示成八種狀態:
000 001 010 011 100 101 110 111
每當您增加一個位時,您將得到兩倍的狀態。
很多計算機使用八位來表示信息,有些則為多八位,例如16位,32位或64位。8位作為一個組通常被用作基礎單位,並且使用另外一個詞「比特」(byte)。計算機的處理器一次處理一個八位或八位的倍數個信息。儲存器使用一個八位或多個八位來存儲數據。
事實上,在一些情況下使用四位來處理問題會更方便,這種四位一組的數據通常被稱為一個「nybble」。但實際上,更常用的是「比特」而不是「nybble」。
一個nybble可以為16種不同的情況編碼,例如數字0到15。大體上,使用任何序列的排列來表示不同的16種狀態是可以的,但在實際的應用通常是這樣的:
0000 = 十進制0 1000 = 十進制8 0001 = 十進制1 1001 = 十進制9 0010 = 十進制2 1010 = 十進制10 0011 = 十進制3 1011 = 十進制11 0100 = 十進制4 1100 = 十進制12 0101 = 十進制5 1101 = 十進制13 0110 = 十進制6 1110 = 十進制14 0111 = 十進制7 1111 = 十進制15
這樣的表示是很自然的,因為它符合我們所熟悉的十進制數表示方法。例如,給定一個十進制數:
7531
我們很自然地把它理解為:
7 × 1000 + 5 × 100 + 3 × 10 + 1 × 1
或者,使用10的冪來表示:
7 × 10 3 + 5 × 10 2 + 3 × 10 1 + 1 × 10 0
注意任何數(除了0)的0次冪都是1。
數據中的每個數字表示從0到9的值,這樣我們有10個不同的數字,那就是我們把它稱為「十進制」的原因。每個數字可以通過10的某次冪來決定它的位置。這聽起來很復雜,但實際上並不是這樣的。這正是當您讀一個數字的使用認為是理所當然的事情,您甚至都不同仔細思考它。
類似地,使用二進制編碼就像上面所說的那樣,值13是這樣編碼的:
1101
每一個位置有兩個數字可以選擇,所以我們稱它為「二進制」。因此,它們的位置是這樣決定的:
1101 =
1 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0 =
1 × 8 + 1 × 4 + 0 × 2 + 1 × 1 = 13(十進制)
注意這里使用了2的冪:1、2、4和8。痴迷於計算機的人通常可以記住2的從2到16次冪,這並不是因為他們的記憶力,而是因為它們大量的使用這些數字:
2 0 = 1 2 8 = 256 2 1 = 2 2 9 = 512 2 2 = 4 2 10 = 1 024 2 3 = 8 2 11 = 2 048 2 4 = 16 2 12 = 4 096 2 5 = 32 2 13 = 8 192 2 6 = 64 2 14 = 16 384 2 7 = 128 2 15 = 32 768 2 16 = 65 536
注意的是,根據公制單位,值2 10 = 1 024通常被提及為「kilo」(千),或簡寫成「K」,所以很多2的高次冪通常可以簡寫成:
2 11 = 2 K = 2 048 2 12 = 4 K = 4 096 2 13 = 8 K = 8 192 2 14 = 16 K = 16 384 2 15 = 32 K = 32 768 2 16 = 64 K = 65 536
同樣的,值2 20 = 1 024 x 1 024 = 1 048 576通常被簡寫成「M」:
2 21 = 2 M 2 22 = 4 M
而2 30 曾被稱為「吉」,或「G」。下面我們將會大量使用這些修飾符號。
有一個很微妙的話題。如果我們使用16位,我們可以得到65 536種不同的值,但是這些值是從0到65 535的。人們通常從1開始數數,但是計算機是從0開始計數的。因為這對它們來說更簡便。這個小問題有時也會使得計算機混淆。
現在,我們得到了計算位的方法:
您只能在您所有的位的范圍內進行算術操作。也即是說,如果您正在使用的是16位,那您不能對65 535或更大的數據進行操作,否則您將得到一個「數據溢出」的錯誤。這個術語表明,您正在進行的是「有限精度」的操作。
使用這種編碼不能表示小數。您只能使用非小數的「整數」。
使用這種編碼不能表示負數。所有的數字都是「無符號數」。
雖然有這種限制,但是在計算機中對於簡單的增1計數來說,「無符號整數」還是十分有用的。它們對計算機來說是很容易處理的。通常計算機使用16位或32位無符號整數,通常被稱為「整數(integer)」或「長整數(long integer)」。一個整數允許對從0到65 535的數據進行操作,而一個長整型允許對從0到4 294 967 295的數進行操作。
八進制和十六進制數
現在讓我們討論一些偏外的話題:對二進制數字的表示方法。計算機通常使用二進制來表達數據,但是在實際中如果使用像這樣的二進制:
1001 0011 0101 0001
那將是一件痛苦的事,並且很容易出錯。通常計算機使用一個基於二進制的表達方式:八進制,或更通常使用的,十六進制。
這一件聽起來挺狡猾但實際上又很簡單的事。如果不是這樣的話,我們就不會這樣使用了。在平常的十進制體系中,我們有10數字(0到9)按以下方式構成排列:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...
在八進制中,我們只有八個數字(0到7)按以下方式構成排列:
0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 ...
也即是說,八進制的「10」相當於十進制的「8」,八進制的「20」相當於十進制的「16」,以此類推。
在十六進制中,我們只有十六個數字(0到9,然後是從a到f)按以下方式構成排列:
0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14 15 16 ...
也即是說,十六進制的「10」相當於十進制的「16」,十六進制的「20」相當於十進制的「32」。
這些表示數值的方法都是表位置的系統,但是它們使用的不是像十進制那樣的10,而是分別使用8和16。例如:
八進制756
= 7 × 8 2 + 5 × 8 1 + 6 × 8 0
= 7 × 64 + 5 × 8 + 6 × 1
= 448 + 40 + 6 = 十進制494
十六進制3b2
= 3 × 16 2 + 11 × 16 1 + 2 × 16 0
= 3 × 256 + 11 × 16 + 2 × 1
= 768 + 176 + 2 = 十進制946
好了,如果您還不是那麼明白,不用擔心。我們想說明的是,對於八進制來說,他們剛好和3位二進制有一個完美的對應關系:
000 = 八進制0
001 = 八進制1
010 = 八進制2
011 = 八進制3
100 = 八進制4
101 = 八進制5
110 = 八進制6
111 = 八進制7
類似的,一個十六進制數剛好和一個4位的二進制數對應。
0000 = 十六進制0 1000 = 十六進制8 0001 = 十六進制1 1001 = 十六進制9 0010 = 十六進制2 1010 = 十六進制a 0011 = 十六進制3 1011 = 十六進制b 0100 = 十六進制4 1100 = 十六進制c 0101 = 十六進制5 1101 = 十六進制d 0110 = 十六進制6 1110 = 十六進制e 0111 = 十六進制7 1111 = 十六進制f
因此,把一個很長的二進制數轉換成一個八進制就變得很簡便,例如:把二進制1001001101010001轉化成八進制:
1 001 001 101 010 001 二進制 = 111521 八進制
轉換成十六進制會更簡單:
1001 0011 0101 0001 = 9351 十六進制
但是要把它轉換成十進制(37 713)就比較麻煩了。八進制和十六進制使得轉換二進制機器級的數字變得簡單方便。
有符號整數和補碼
在定義了無符號二進制數後,我們就要著手定義負數了,或稱為「有符號整數」。最簡單的一個方法是保留一個位來表示數值的符號。這個「符號位」可以位於數值的最左邊,當然也可以位於數值的最右邊。如果這個符號位為0,表示數值是正的,如果這個符號位為1,表示數值是負的。
這樣做是可以的,雖然從人類的角度來看是最明顯的解決方案,但是它對於計算機來說有可能帶來一些難度。例如,這種編碼使得0可以有正負兩種。人們可能對此感到不可思議,但是這對計算機來說是適應的。
對計算機來說,更自然的表達方式是對給定的位數的二進制數按其范圍分成兩半,其中前一半用來表示負數。例如,在4位數值中,你可以得到:
0000 = 十進制0 0001 = 十進制1 0010 = 十進制2 0011 = 十進制3 0100 = 十進制4 0101 = 十進制5 0110 = 十進制6 0111 = 十進制7 1000 = 十進制-8 1001 = 十進制-7 1010 = 十進制-6 1011 = 十進制-5 1100 = 十進制-4 1101 = 十進制-3 1110 = 十進制-2 1111 = 十進制-1
現在我們得到了一個「有符號整數」數字系統,使用所知道的,為了一些不是很重要的原因,「補碼」編碼方式。對16位有符號數字編碼來說,我們可以得到范圍為-32 768到32 767的有符號數字。對一個32位的有符號編碼系統來說,我們可以為從-2 147 483 648到2 147 482 647的數編碼。
與只改變符號位來表示負數的編碼方式相比,「補碼」編碼方式與之有所不同。例如對於-5來說,只對符號位編碼,應該是:
1101
但是對於「補碼」編碼方式來說,則是:
1011
這對於符號編碼來說是-3。關於為什麼計算機要使用補碼這種編碼方式我們會在後面解釋。
所以,現在我們可以以二進制方式來表示正負兩種不同的數值。請記住對於一個二進制數來說,只有兩種解釋方式。如果在內存中有一個這樣的二進制數值:
1101
-- 這只能解釋為十進制的「13」或「-3」。
定點小數
這種格式通常被用於商業計算(例如在電子表格或COBOL中);因為在這里,丟棄小數位來記錄金錢是不能接受的。因此了解二進制如何存貯小數是十分有用的。
首先去我們必須決定要用多少位來存貯小數部分和多少位來存儲整數部分。假設我們使用32位來表示這種格式,那麼我們用16位表示整數部分,16位來表示小數部分。
小數部分怎麼使用呢?這沿用了表示整數的方式:如果8位接下來是4位,是2位,1位,那麼當然接下來就是半位,1/4位和1/8位等等了。
例如:
整數位 小數位 0.5 = 1/2 = 00000000 00000000.10000000 00000000 1.25 = 1 1/4 = 00000000 00000001.01000000 00000000 7.375 = 7 3/8 = 00000000 00000111.01100000 00000000
有一點棘手的是,如果您要表達1/5(十進制的0.2),那您不能得到精確的數值表達方式。最好的方法只能是:
13107/65536 = 00000000 00000000.00110011 00110011 = 0.1999969... 十進制
13108/65536 = 00000000 00000000.00110011 00110100 = 0.2000122... 十進制
然而不,您不能只樣做,既是你有更多的數位來表達。問題是,一些小數使用二進制的方式不能精確地表達出來。除非您使用一個特殊的辦法。這個特殊的辦法是分別使用兩個數字來表達小數:一個是分子,一個是分母。然後您可以使用學校學習的加、減、乘、除來得到它們。然而,這些方法不能表達更高級的數字(例如平方根),或者如果這兩個分母的最小公倍數很大的話,那就難以使用。這就是使用定點小數表達小數的優點。
浮點小數
當我們使用了有符號和無符號的數值表達方式時。如果遇到連32位也不足以表達的大范圍的數,或也許可以表達,但我們必須為此放棄小數位時,我們可以選擇的以獲得更大范圍的數值的表達方式的方法是使用「浮點小數」格式而拋棄「定點小數」格式。
在十進制中,我們對以下的表達方式很熟悉:
1.1030402 × 10 5 = 1.1030402 × 100000 = 110304.02
或簡寫成:
1.1030402E5
這表示「1.103402乘以一個1後面跟著5個零的數」。我們可以得到一個確定的稱謂「尾數」的數值(1.1030402),乘以一個10的某個冪級數(E5,表示10 5 或100 000),也就是「冪級數」。如果我們使用一個負的冪級數,那就意味著乘以該正級數的倒數。例如:
2.3434E-6 = 2.3434 × 10 -6 = 2.3434 × 0.000001 = 0.0000023434
使用這種定義的好處是我們可以得到更大范圍的數值,雖然尾數部分的精確度受到影響。相似的原理可以應用於二進制中為計算機使用。人們設計了很多方式,但是作常用的是由美國電器和電子工程師協會定義的一種方法。它對64位浮點格式的定義是:
11位二進製表示指數,使用「超1023」格式。這種格式使得指數可以表示為0到2047的無符號數,但是在得到真實值前必須先減去1023;
52位尾數,使用無符號數字表示;
一個符號位;
下面我們使用一個例子來了解計算機如何使用內存的8位存儲這些數字:
第0位: S x10 x9 x8 x7 x6 x5 x4 第1位: x3 x2 x1 x0 m51 m50 m49 m48 第2位: m47 m46 m45 m44 m43 m42 m41 m40 第3位: m39 m38 m37 m36 m35 m34 m33 m32 第4位: m31 m30 m29 m28 m27 m26 m25 m24 第5位: m23 m22 m21 m20 m19 m18 m17 m16 第6位: m15 m14 m13 m12 m11 m10 m9 m8 第7位: m7 m6 m5 m4 m3 m2 m1 m0
其中的「S」表示符號位,「X」表示指數位(階碼?),「m」表示尾數位。一旦這些數字被讀取,它將轉換成:
<符號> × (1 + <小數形式的尾數>) × 2 <階碼> - 1023
這個方式提供的數字范圍為:
最大值 最小值
正數 1.797693134862231E+308 4.940656458412465E-324
負數 -4.940656458412465E-324 -1.797693134862231E+308
這種方式也定義了一些不是數字的值,例如「NaNs」(「不是一個數字」)。這通常用來返回表示數字溢出的信息。通常您不會碰到它,所以我們也不會對它進行進一步討論。一些程序使用32位浮點小數。最普遍的是使用32位尾數,1位符號位,8位階碼和「超127」格式。它提供7位十進制數字。
第0位: S x7 x6 x5 x4 x3 x2 x1 第1位: x0 m22 m21 m20 m19 m18 m17 m16 第2位: m15 m14 m13 m12 m11 m10 m9 m8 第3位: m7 m6 m5 m4 m3 m2 m1 m0
數字轉換時使用:
<符號> × (1 + <小數形式的尾數>) × 2 <階碼> - 127
它的范圍為:
最大值 最小值
正數 3.402823E+38 2.802597E-45
負數 -2.802597E-45 -3.402823E+38
通常我們可以把32位的二進制浮點數稱為「單精度」浮點數,而把64位的二進制浮點數稱為「雙精度」浮點數。如果我們使用real的時候,通常表示雙精度的浮點數;而使用float的時候,我們通常指單精度的浮點數。
但是要記住的是,位是位,它們在計算機的存儲是連續的,當計算機內存中有一個64位數據時,它可能是一個雙精度的浮點數,也可能是兩個單精度的浮點數,或4個有符號或無符號的整數,或其它8位的數據,這取決於計算機如何讀取它們。如果計算機把4個無符號整數以雙精度浮點小數方式讀出的話,它可以得到一個雙精度浮點小數,但這個數據可能是一個垃圾數據。
所以,現在雖然我們已經解決了正、負數的存貯方式,但是對於浮點數來說,仍然存在一些與整數一樣的缺陷,例如:
像整數一樣,浮點數也有范圍。雖然我們得到了比整數要大得多的范圍,但是仍然是有限的,如果您試圖把兩個很大的數乘起來,您可能會得到「數據上溢」的錯誤。而如果您把一個小的數字除以一個函大的數字,那就可能使得指數的數值出錯,出現「數據下溢」的錯誤。通常把最大值稱為「機器無窮」,因為它是計算機所能處理的最大的數字。
另一個問題是精度。雖然您有15位的數字來表示很大的數,但是擋對它進行四則運算的時候,它們可能不給您任何提示就把一些數字丟棄。這意味著,如果您把一個很小的數加到一個很大的數值上去的時候,由於這個數字太小,以至於15位或16位的精度都不能顯示它,計算機就會把這個數字丟棄。如果您在做計算的時候得到一個十分奇怪的數字,您可以需要檢查您的數據范圍是否合適。
這意味著,如果您做浮點計算,較小的數字很可能被丟棄了。雖然這在平常來說並不明顯,但是如果您是做要求很高的數學分析工作,這些錯誤可能會累積起來,以至於最後得到的結果十分不準確。
這個錯誤對進行數學研究的人來說十分重要,他們必須對誤差十分了解,以及研究一些辦法來減少誤差,並且應該可以估計到誤差的大小。
順便說一句,「精度」問題與「范圍」問題不同,前者指的是有關尾數的表示範圍,後者指的是指數的表達范圍。
另外一個不太明顯的誤差是由於浮點數的二進制和十進制並不完全相等。如果您操作的數好是2的冪級數的倒數,例如0.75,那是用二進制可以准確的標示為0.11,因為它剛好是1/2+1/4的值。可是不幸的是,您可能通常不會得到如此恰到好處的數字,這就是說,計算機會把一些數字丟掉,例如要表示0.1,只能使用無窮循環的二進制小數0.000110011……表示了。
如果您對這部分內容不理解,別擔心。這里的要點是,計算機不是萬能的,它只是一部機器,並要符合一定的規則和受到一定的限制。雖然很多人對計算機抱有孩子似的信任,但是在計算機雖好的解決方法下也有一些不可避免的不精確。
編程語言中的數
對於低級語言的編程者來說,他們要擔心有符號和無符號、定點和浮點數的運算。他們必須使用十分不同的代碼來實現操作。
但是,對高級語言的編程者來說,諸如LISP和 Python 提供了一些列諸如「有理數」、「復數」之類的抽象數據類型。而他們可以斷言他們的系統可以使用數學操作做正確的運算。由於操作符重載,數學運算可以應用於任何數字——無論是有符號的、無符號的、有理數、定點小數、浮點小數或復數。
文本編碼:ASCII和字元串
現在我們已經得到不同的方法來存儲數據了,那麼文本呢?我們怎麼存儲姓名、地址或寫給朋友的信件呢?
當然,如果您還記得位是位的話,我們沒有理由不能使用位來表達字母「A」或「?」獲「Z」之類的。因為很多計算機每次處理一個位元組,所以使用單位元組的數據來表達單個字母會很方便。我們可以使用這個:
0100 0110 (hex 46)
來表示字母「F」。計算機使用這樣的「字元編碼」來向顯示程序傳送要求的文本。
下面是一個用來存儲西方字母的標准二進制編碼,就是通常所說的「美國信息交換標准碼」(英文簡稱「 ASCII 」),下面的編碼為ASCII編碼,使用「d」表示十進制編碼,「h」表示十六進制代碼,「o」表示八進制代碼:
ASCII碼表 ______________________________________________________________________
ch ctl d h o ch d h o ch d h o ch d h o ______________________________________________________________________
NUL ^@ 0 0 0 sp 32 20 40 @ 64 40 100 ' 96 60 140 SOH ^A 1 1 1 ! 33 21 41 A 65 41 101 a 97 61 141 STX ^B 2 2 2 " 34 22 42 B 66 42 102 b 98 62 142 ETX ^C 3 3 3 # 35 23 43 C 67 43 103 c 99 63 143 EOT ^D 4 4 4 $ 36 24 44 D 68 44 104 d 100 64 144 ENQ ^E 5 5 5 % 37 25 45 E 69 45 105 e 101 65 145 ACK ^F 6 6 6 & 38 26 46 F 70 46 106 f 102 66 146 BEL ^G 7 7 7 ` 39 27 47 G 71 47 107 g 103 67 147
BS ^H 8 8 10 ( 40 28 50 H 72 48 110 h 104 68 150 HT ^I 9 9 11 ) 41 29 51 I 73 49 111 i 105 69 151 LF ^J 10 a 12 * 42 2a 52 J 74 4a 112 j 106 6a 152 VT ^K 11 b 13 _ 43 2b 53 K 75 4b 113 k 107 6b 153 FF ^L 12 c 14 44 2c 54 L 76 4c 114 l 108 6c 154 CR ^M 13 d 15 _ 45 2d 55 M 77 4d 115 m 109 6d 155 SO ^N 14 e 16 . 46 2e 56 N 78 4e 116 n 110 6e 156 SI ^O 15 f 17 / 47 2f 57 O 79 4f 117 o 111 6f 157
DLE ^P 16 10 20 0 48 30 60 P 80 50 120 p 112 70 160 DC1 ^Q 17 11 21 1 49 31 61 Q 81 51 121 q 113 71 161 DC2 ^R 18 12 22 2 50 32 62 R 82 52 122 r 114 72 162 DC3 ^S 19 13 23 3 51 33 63 S 83 53 123 s 115 73 163 DC4 ^T 20 14 24 4 52 34 64 T 84 54 124 t 116 74 164 NAK ^U 21 15 25 5 53 35 65 U 85 55 125 u 117 75 165 SYN ^V 22 16 26 6 54 36 66 V 86 56 126 v 118 76 166 ETB ^W 23 17 27 7 55 37 67 W 87 57 127 w 119 77 167
CAN ^X 24 18 30 8 56 38 70 X 88 58 130 x 120 78 170 EM ^Y 25 19 31 9 57 39 71 Y 89 59 131 y 121 79 171 SUB ^Z 26 1a 32 : 58 3a 72 Z 90 5a 132 z 122 7a 172 ESC ^[ 27 1b 33 ; 59 3b 73 [ 91 5b 133 { 123 7b 173 FS ^\ 28 1c 34 < 60 3c 74 \ 92 5c 134 124 7c 174 GS ^] 29 1d 35 = 61 3d 75 ] 93 5d 135 } 125 7d 175 RS ^^ 30 1e 36 > 62 3e 76 ^ 94 5e 136 ~ 126 7e 176 US ^_ 31 1f 37 ? 63 3f 77 _ 95 5f 137 DEL 127 7f 177 ______________________________________________________________________
上面這個列表的最左邊有一個些奇怪的字元,例如「FF」和「BS」,這些都不是文本字元。相反,它們是控制字元,也就是說當這些字元發送到特定的設備時,它將產生一些動作。例如「FF」表示換頁,或彈出;「BS」表示退格,而「BEL」表示一個響聲。在一個文本編輯器中,它們會顯示成一個白色或黑色的方塊,或笑臉、音符或其它一些奇怪的符號。要打出這些字元,可以使用CTRL鍵和一個合適的代碼。例如同時按住「CTRL」和「G」,或簡寫成「CTRL-G」或「^G」可以打出一個BEL字元。
上面這個ASCII碼表示定義了128個字元,這意味著ASCII碼只需要7位。但是,很多計算機都以位元組為單位存儲信息。這個額外的一位可以定義第二個128個字集,一個「擴展」字集。
在實際中,有很多不同的「擴展」字集,提供很多例如數學符號等的符號或非英語字元。這個擴展字集並沒有進行標准化,並經常會引起混淆。
這個表格強調了這篇文章的主題:位就是位。這樣的話,您可以使用位來表示字元。您可以把特殊的代碼描述成特殊的十進制、八進制和十六進制,但是它們仍然是相同的代碼。這些數值的表達,無論是十進制、八進制或十六進制,都只是相同的位的表達。
當然,您可能在一段話中表達很多的字元,例如:
Tiger tiger burning bright!
這只是簡單的替換成ASCII碼,表示成:
54 69 67 65 72 2c 20 74 69 67 65 72 20 62 75 ...
計算機把這種ASCII「字元串」以連續空間的「數組」來存儲。一些應用程序可以包括一個二進制數值表示字元串的長度,但是更通常的做法是使用一個表示結尾的字元NULL(ASCII表中的0字元〕表示字元串的結束。
請參看:
Ⅷ 計算機編碼是做什麼用的
最小的單元是位(bit),接著是位元組(Byte),一個位元組=8位,英語表示是1 byte=8 bits 。機器語言的單位Byte。接著是KB,1 KB=1024 Byte; 接著是MB,1 MB=1024 KB; 接著是GB,1 GB=1024 MB ;接著是TB, 1TB=1024 GB。
接著是進制:二進制0和1,8進制0-7, 十進制不用說,10進制0-9後面是A,B,C,D,E,F 他們關系如下:
Binary Octal Decimal Hex
0 0 0 0
1 1 1 1
10 2 2 2
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
接著是上層建築字元:
字元是各種文字和符號的總稱,包括各國家文字、標點符號、圖形符號、數字等。字元集是多個字元的集合,字元集種類較多,每個字元集包含的字元個數不同,常見字元集名稱:ASCII字元集、GB2312字元集、BIG5字元集、 GB 18030字元集、Unicode字元集等。計算機要准確的處理各種字元集文字,需要進行字元編碼,以便計算機能夠識別和存儲各種文字。
編輯本段ASCII 字元集
ASCII(American Standard Code for Information Interchange,美國信息互換標准代碼)是基於羅馬字母表的一套電腦編碼系統,它主要用於顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,並等同於國際標准ISO 646。
包含內容:
控制字元:回車鍵、退格、換行鍵等。
可顯示字元:英文大小寫字元、阿拉伯數字和西文符號
ASCII擴展字元集擴展:表格符號、計算符號、希臘字母和特殊的拉丁符號。
第0~32號及第127號(共34個)是控制字元或通訊專用字元,如控制符:LF(換行)、CR(回車)、FF(換頁)、DEL(刪除)、BEL(振鈴)等;通訊專用字元:SOH(文頭)、EOT(文尾)、ACK(確認)等;
第33~126號(共94個)是字元,其中第48~57號為0~9十個阿拉伯數字;65~90號為26個大寫英文字母,97~122號為26個小寫英文字母,其餘為一些標點符號、運算符號等。
注意:在計算機的存儲單元中,一個ASCII碼值佔一個位元組(8個二進制位),其最高位(b7)用作奇偶校驗位。所謂奇偶校驗,是指在代碼傳送過程中用來檢驗是否出現錯誤的一種方法,一般分奇校驗和偶校驗兩種。奇校驗規定:正確的代碼一個位元組中1的個數必須是奇數,若非奇數,則在最高位b7添1;偶校驗規定:正確的代碼一個位元組中1的個數必須是偶數,若非偶數,則在最高位b7添1。
DEC HEX CHAR CODE C 程序(轉義)
0 00 NUL (』\0』)
1 01 SOH
2 02 STX
3 03 ETX
4 04 EOT
5 05 ENQ
6 06 ACK
7 07 BEL (』\a』)
8 08 BS (』\b』)
9 09 HT (』\t』)
10 0A LF (』\n』)
11 0B VT (』\v』)
12 0C FF (』\f』)
13 0D CR (』\r』)
14 0E SO
15 0F SI
16 10 DLE
17 11 DC1
18 12 DC2
19 13 DC1
20 14 DC4
21 15 NAK
22 16 SYN
23 17 ETB
24 18 CAN
25 19 EM
26 1A SUB
27 1B ESC
28 1C FS
29 1D GS
30 1E RS
31 1F US
32 20 (space,空格)
33 21 !
34 22 "
35 23 #
36 24 $
37 25 %
38 26 &
39 27 』
40 28 (
41 29 )
42 2A *
43 2B +