หน้าเว็บ

วันจันทร์ที่ 4 เมษายน พ.ศ. 2554

รหัสแทนข้อมูลในคอมพิวเตอร์

รหัสแทนข้อมูลในคอมพิวเตอร์


ความหมายของรหัสแทนข้อมูล
รหัสแทนข้อมูล  หมายถึง รหัสที่ใช้แทนตัวอักขระ ซึ่งประกอบด้วยตัวอักษร ตัวเลข หรือสัญลักษณ์พิเศษอื่น ๆ ที่ใช้ในโปรแกรมคอมพิวเตอร์ เพราะว่าข้อมูลที่เก็บไว้ในหน่วยความจำของคอมพิวเตอร์จะแทนด้วยรหัสเลขฐานสองที่มีเลข ๐ กับ ๑ วางเรียงกัน


ซึ่งรหัสข้อมูลแบ่งออกเป็น 2 ประเภท ดังนี้ คือ
1. รหัสภายนอกเครื่อง (External Code) หมายถึง รหัสที่ใช้สำหรับการบันทึกข้อมูลที่อยู่ภายนอกเครื่องคอมพิวเตอร์ เช่น การบันทึกข้อมูลบนบัตรเจาะรู โดยใช้สัญลักษณ์การเจาะรูแต่ละแถวแทนข้อมูล 1 ตังอักษร
2. รหัสภายในเครื่อง (Internal Code) หมายถึง รหัสที่ใช้แทนข้อมูลที่ถูกอ่านและบันทึกอยู่ในหน่วยความจำของเครื่องคอมพิวเตอร์ ซึ่งรหัสที่ใช้แทนข้อมูลภายในเครื่องคอมพิวเตอร์ ซึ่งมีหลายรูปแบบ ดังนี้
รหัสบีซีดี               รหัสแอบซีดิก                     รหัสแอสกี้                            รหัสยูนิโคด


รหัสแอสกี้ (ASCII)

รหัส ASCII (American Standard Code for Information Interchange)
      รหัสแอสกี เป็นรหัสที่นิยมใช้กันมาก จนสามมารถนับได้ว่าเป็นรหัสมาตรฐานที่ใช้ใน การสื่อสารข้อมูล ( Data Communications) แทนสัญลักษณ์ต่าง ๆ ได้ ๒๕๖ ตัว เมื่อใช้แทนตัวอักษรภาษาอังกฤษแล้วยังมีเหลืออยู่ สำนักงานมาตรฐานผลิตภัณฑ์อุตสาหกรรม หรือ สมอ. ได้กำหนดรหัสภาษาไทยเพิ่มลงไปเพื่อให้ใช้งานร่วมกันได้ ตามตารางที่  ๔.๑  การแทนค่าแทนค่าด้วยตัวเลขแนวตั้ง(b b)ก่อน แล้วตามด้วยตัวเลขแนวนอน(b – b๐) เช่น   ก ๑๐๑๐๐๐๐๑   และ  ๐๑๐๐๐๐๐๑   

บิตที่ ๔ ถึง ๗ เป็นส่วนที่ใช้กำหนดประเภทของตัวอักขระ
๐๐๑๐

เครื่องหมายต่าง ๆ
๐๐๑๑

ตัวเลขและเครื่องหมายต่างๆ
๐๑๐๐

A-O
๐๑๐๑

P-Z และเครื่องหมายต่าง ๆ
๐๑๑๐

a-o
๐๑๑๐

p-z และเครื่องหมายต่าง ๆ
บิตที่ ๐ ถึง ๓ เป็นรหัสแทนอักขระแต่ละตัวในกลุ่มนั้น
ตารางที่ ๔.๑  รหัส ASCII  แทนตัวอักษรภาษาอังกฤษและภาษาไทย



b7
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

b6
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

b5
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

b4
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
b3
b2
b1
b0

















0
0
0
0





@
P
`
p



0
0
0
1




!
A
Q
a
q


0
0
1
0




"
B
R
b
r


0
0
1
1




#
C
S
c
s


0
1
0
0




$
D
T
d
t


0
1
0
1




%
E
U
e
u


0
1
1
0




&
F
V
f
v


0
1
1
1




'
G
W
g
w


1
0
0
0




(
H
X
h
x


1
0
0
1




)
I
Y
i
y


1
0
1
0




*
J
Z
j
z


1
0
1
1




+
K
[
k
{



1
1
0
0




,
L
\
l
|




1
1
0
1




-
M
]
m
}




1
1
1
0




.
N
^
n
~




1
1
1
1




/
O
_
o



฿

รหัสเอ็บซีดิก (EBCDIC)
          รหัสเอ็บซีดิก (EBCDIC) เป็นคำย่อมาจาก Extended Binary Coded Decimal Interchange Code พัฒนาและใช้งานโดยบริษัทไอบีเอ็ม เครื่องคอมพิวเตอร์เมนเฟรมของไอบีเอ็มยังคงใช้รหัสนี้

การแทนข้อมูลในหน่วยความจำ
          หน่วยความจำหลักของคอมพิวเตอร์เป็นที่เก็บข้อมูลและคำสั่งในขณะประมวลผล การเก็บข้อมูลในหน่วยความจำเป็นการเก็บรหัสตัวเลขฐานสอง ข้อมูลที่ใช้ในการประมวลผลทั้งตัวเลขหรือตัวอักษรจะได้รับการแทนเป็นตัวเลขฐานสอง แล้วเก็บไว้ในหน่วยความจำ เช่น ข้อความว่า BANGKOK เก็บในคอมพิวเตอร์จะแทนเป็นรหัสเรียงกันไป ดังนี้

 
หน่วยความจำ
B
01000010
A
01000001
N
01001110
G
01000111
K
01001011
O
01001111
K
01001011
รูป แสดงตัวอย่างการแทนข้อความในหน่วยความจำ
**หน่วยความจำของไมโครคอมพิวเตอร์ที่ใช้กันอยู่ในขณะนี้ มีขนาดความกว้าง 8 บิต และเก็บข้อมูลเรียงกันไป โดยมีการกำหนดตำแหน่งซึ่งเรียกว่า เลขที่อยู่ (address)***       
เพื่อให้ข้อมูลที่เก็บมีความถูกต้อง การเขียนหรืออ่านทุกครั้งจึงต้องตรวจสอบความถูกต้องของข้อมูล วิธีที่ง่ายและนิยมใช้กันคือการเพิ่มอีก 1 บิต เรียกว่า บิตพาริตี (parity bit) บิตพาริตีที่เพิ่มเติมเข้าไปจะทำให้ข้อมูลทั้งหมดในส่วนนั้นมีเลข 1 เป็นจำนวนคู่ หรือจำนวนคี่ เช่น ในไมโครคอมพิวเตอร์เพิ่มอีก 1 บิต เพื่อทำให้เลขหนึ่งเป็นจำนวนคู่ เรียกว่าพาริตีคู่ (even parity) บิตพาริตีที่เติมสำหรับข้อมูลตัวอักษร A และ E เป็นดังนี้
          A 01000001 0 <-- บิตพาริตี
          E 01000101 1 <-- บิตพาริตี
          ข้อมูล A มีเลข 1 สองตัว ซึ่งเป็นจำนวนคู่อยู่แล้ว ดังนั้นจึงใส่บิตพาริตีเป็นเลข 0
         
ข้อมูล E มีเลข 1 เป็นจำนวนคี่ จึงใส่บิตพาริตีเป็น 1 เพื่อให้มีเลข 1 เป็นจำนวนคู่

**ตัวอย่าง**  ข้อความ BANGKOK เมื่อเก็บในหน่วยความจำหลักของไมโครคอมพิวเตอร์ที่มีบิตพาริตีด้วยจะเป็นดังรูป
 
หน่วยความจำ
บิตพาริตี
B
01000010
0
A
01000001
0
N
01001110
0
G
01000111
0
K
01001011
0
O
01001111
1
K
01001011
0
รูปที่ แสดงตัวอย่างการแทนข้อความในหน่วยความจำแบบมีบิตพาริตี


การแทนคำสั่งในหน่วยความจำ
          หน่วยควบคุมของคอมพิวเตอร์ที่อยู่ในซีพียู ทำการอ่านคำสั่งจากหน่วยความจำมาแปลความหมายและกระทำตาม คำสั่งคอมพิวเตอร์พื้นฐานที่สุดเรียกว่า ภาษาเครื่อง (machine langauge) ภาษาเครื่องมีลักษณะเป็นรหัสที่ใช้ตัวเลขฐานสอง ตัวเลขฐานสองเหล่านี้แทนชุดรหัสคำสั่ง คอมพิวเตอร์เครื่องหนึ่งมีคำสั่งที่ใช้ได้หลายร้อยคำสั่ง แต่ละคำสั่งจะมีความหมายเฉพาะ เช่น คำสั่งนำข้อมูลที่มีค่าเป็น 3 จากหน่วยความจำตำแหน่งที่ 8000 มาบวกกับข้อมูลที่มีค่าเป็น 5 ในตำแหน่งที่ 8001 ผลลัพธ์ที่ได้ให้เก็บไว้ในหน่วยความจำตำแหน่งที่ 8002 เมื่อเขียนคำสั่งเป็นภาษาเครื่องจะมีลักษณะเป็นตัวเลขฐานสองเรียงต่อกันเป็นจำนวนมาก ซึ่งเข้าใจได้ยาก จึงมักใช้ตัวอักษรแทนรหัสภาษาเครื่องเหล่านี้ ดังตัวอย่าง

แอสเซมบลี
ภาษาเครื่อง
LD A,(8000)
00111010,00000000,10000000
LD B,A
01000111
LD A,(8001)
00111010,00000001,10000000
ADD A,B
10000000
LD (8002),A
00110010,00000010,10000000
รูป แสดงตัวอย่างการแทนคำสั่งภาษาเครื่อง

รหัสภาษาเครื่องเมื่อเก็บอยู่ในหน่วยความจำของคอมพิวเตอร์จะมีลักษณะเรียงต่อกันไป สมมติให้ส่วนของโปรแกรมเก็บในหน่วยความจำตำแหน่งเริ่มจาก 1000 และข้อมูลเก็บไว้ที่ตำแหน่งเริ่มจาก 8000 ดังรูป
แอสแซมบลี
ตำแหน่ง
หน่วยความจำ
บิตพาริตี
LD A,(8000)
1000
00111010
0
 
1001
00000000
0
 
1002
10000000
1
LD B,A
1003
01000111
0
LD A,(8001)
1004
00111010
0
 
1005
00000001
1
 
1006
10000000
1
ADD A,B
1007
10000000
1
LD (8002),A
1008
00110010
1
 
1009
00000010
1
 
1010
10000000
1
 
.
.
.
 
.
.
.
 
.
.
.
ข้อมูล
8000
00000011
0
 
8001
00000101
0
ผลลัพธ์
8002
00001000
1
รูป การเก็บข้อมูลและคำสั่งลงในหน่วยความจำด้วยรหัสเลขฐานสอง
          ภาษาสั่งการพื้นฐานที่ใช้รหัสตัวเลขฐานสองนี้เรียกว่า ภาษาเครื่อง คอมพิวเตอร์ที่ใช้ซีพียูต่างตระกูลกันจะมีภาษาเครื่องที่ต่างกัน เช่น เครื่องที่ใช้ซีพียูเพนเทียมกับซีพียูที่ใช้ในเครื่องแมกอินทอช มีรหัสคำสั่งต่างกัน


รหัสบีซีดี (Binary Coded Decimal: BCD)
รหัสบีซีดี (Binary Coded Decimal: BCD) เป็นรหัสที่ใช้เลขฐานสองแทนเลขฐานสิบ ใช้จำนวน 6 บิต เพื่อแทนข้อมูล 1 อักขระ ดังนั้นรหัสบีซีดีจึงสามารถสร้างรหัสที่มีความแตกต่างกันได้ 64 รหัส (64 = 26) การกำหนดรหัสบีซีดีสำหรับ 1 อักขระนี้ ทำได้โดยแบ่งจำนวน 6 บิต ออกเป็น 2  ส่วน คือ
Zone Bit ใช้ 2 บิตแรก
Digit Bit ใช้ 4 บิตหลัง
รหัสบีซีดี 64 รหัส สามารถใช้แทนข้อมูลที่เป็นตัวเลข ตัวอักษร และสัญลักษณ์พิเศษต่าง ๆ ดังนี้
ข้อมูลที่เป็นตัวเลขการแทนข้อมูลที่เป็นตัวเลขด้วยรหัสบีซีดี ส่วนที่เป็น Zone Bit จะถูกกำหนดเป็น 00 เท่านั้นส่วนที่เป็น Digit Bit ใช้บันทึกค่าของตัวเลขนั้น ๆ ในระบบฐานสอง กรณีที่ตัวเลขมีค่ามากกว่า 1 หลัก สามารถกำหนดเป็นรหัสบีซีดี โดยแยกกำหนดครั้งละ 1 หลักข้อมูลที่เป็นตัวอักษรการแทนข้อมูลที่เป็นตัวอักษรด้วยรหัสบีซีดี ทำได้ดังนี้ คือ
ข้อมูล
Zone Bit
Digit Bit
ตัวอักษร A-I
11
ค่าของข้อมูลนั้นในระบบเลขฐานสอง
ตัวอักษร J-R
10
ตัวอักษร S-Z
00




รหัสยูนิโคด (Unicode)
       
รหัสยูนิโคด (Unicode) เนื่องจากรหัสแทนข้อมูลที่กล่าวมาแล้วทั้ง 3 รูปแบบนั้น เพียงพอสำหรับการใช้งานในภาษาอังกฤษเท่านั้น กรณีที่ต้องการแทนตัวอักษรของประเทศต่าง ๆ ทั่วโลกนั้นรหัสแทนข้อมูล 3 รูปแบบนั้นไม่เพียงพอต่อการใช้งาน
ดังนั้นจึงมีการกำหนดรหัสแทนข้อมูลแบบยูนิโคดขึ้นมา โดยใช้จำนวน 16 บิต เพื่อแทนข้อมูล1 อักขระ ซึ่งสามารถสร้างรหัสที่มีความแตกต่างกันได้ 65,536 รหัส
**ปัจจุบันรหัสยูนิโคด ได้ใช้แทนค่าของข้อมูลภาษาต่าง ๆ มากกว่า 34,000 รหัส โดยที่รหัส 256 ตัวแรกจะตรงกับรหัสแอสกี**
 

3 ความคิดเห็น: