 |
|
|
 |
 |
|
การเก็บข้อมูลอักขระ
ตัวอย่างคำถาม
โจทย์กำหนดข้อความที่ประกอบด้วยตัวอักขระ 2-3 ตัว และให้ตารางรหัสอักขระ ASCII มาบางส่วน (ซึ่งครอบคลุมตัวอักขระในโจทย์) จากนั้นก็จะถามว่า ข้อมูลที่เก็บอยู่ในคอมพิวเตอร์ในรูปเลขฐานสิบหกเป็นเช่นไร เพื่อให้ยากขึ้นโจทย์อาจจะเพิ่มการเก็บ parity จำนวนหนึ่งบิตในอักขระแต่ละตัว (เป็นบิตที่แปด)
ความรู้ก่อนอ่าน
เลขฐานสองและฐานสิบหก ถ้าเป็นไปได้ควรจะคุ้นเคยกับการอ่านตารางรหัสอักขระ ASCII ซึ่งอาจจะมาเป็นเลขฐานสอง หรือฐานสิบหก หรือฐานสิบ
ความรู้เบื้องต้น
การอ่านค่าจากตาราง
ข้อความต่าง ๆ เมื่อจัดเก็บในคอมพิวเตอร์ นิยมเก็บอยู่สองแบบ คือ ASCII 8 บิต หรือ Unicode 16 bit รหัส ASCII หรือที่ย่อมาจาก American Standard Code for Information Interchange จริง ๆ แล้วใช้เพียง 7 บิต เมื่อมาเป็นเป็น 8 บิต บิตสูงสุด (หรือบิตซ้ายสุด) ที่เติมเข้ามาอาจจะเพียงแต่เติม 0 เข้าไป หรือไม่ก็นำมาใช้เป็น partity bit
ลองพิจารณาตาราง ASCII แบบฐานสิบหก
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2 SP ! " # $ % & ' ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~ DEL
การอ่านตารางให้นำตัวเลขแนวนอน และแนวตั้งมาเรียงต่อกัน เช่น ตัวอักขระ A ก็คือ 41h, ตัวเลข 1 คือ 31h เป็นต้น
สมมติว่าต้องการเก็บคำว่า BINGO ก็จะได้เป็น 42h 49h 4Eh 47h 4Fh ตามลำดับ ในตารางนี้จะมีส่วนที่ไม่เป็นอักขระ แต่เป็นตัวควบคุมต่าง ๆ ซึ่งจะเขียนเป็นตัวอักษรสองถึงสามตัว เล่น LF (Line Feed), DEL (Delete) ไม่ได้ใช้ในการประกอบตัวอักษร ตัวอย่างเช่น คำว่า ENQUIRE จะหมายถึง E-N-Q-U-I-R-E 7 ตัวอักษร ไม่ได้หมายถึง ENQ-U-I-R-E 5 ตัวอักษร
ตาราง ASCII อาจจะเขียนในรูปแบบอื่น ๆ ดังนี้
0 1 2 3 4 5 6 7 8 9 A B C D E F
00 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
10 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
20 SP ! " # $ % & ' ( ) * + , - . /
30 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
40 @ A B C D E F G H I J K L M N O
50 P Q R S T U V W X Y Z [ \ ] ^ _
60 ` a b c d e f g h i j k l m n o
70 p q r s t u v w x y z { | } ~ DEL
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
16 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
32 SP ! " # $ % & ' ( ) * + , - . /
48 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
72 @ A B C D E F G H I J K L M N O
80 P Q R S T U V W X Y Z [ \ ] ^ _
96 ` a b c d e f g h i j k l m n o
112 p q r s t u v w x y z { | } ~ DEL
00 10 20 30 40 50 60 70
0 NUL DLE SP 0 @ P ` p
1 SOH DC1 ! 1 A Q a q
2 STX DC2 " 2 B R b r
3 ETX DC3 # 3 C S c s
4 EOT DC4 $ 4 D T d t
5 ENQ NAK % 5 E U e u
6 ACK SYN & 6 F V f v
7 BEL ETB ' 7 G W g W
8 BS CAN ( 8 H X h x
9 HT EM ) 9 I Y i y
A LF SUB * : J Z j z
B VT ESC + ; K [ k {
C FF FS , < L \ l |
D CR GS - = M ] m }
E SO RS . > N ^ n ~
F SI US / ? O _ o DEL
การคำนวณ parity bit
parity bit มีได้ 5 แบบ คือ N (None, ไม่มี), E (Even, คู่), O (Odd, คี่), 0 (ศูนย์เสมอ) และ 1 (หนึ่งเสมอ) โดยทั่วไปโจทย์จะไม่ถาม N,0,1 เนื่องจากไม่ต้องคำนวณอะไรนัก
การจะคำนวณจะต้องเปลี่ยนรหัสเป็นเลขฐานสองก่อน ตัวอย่างเช่น คำว่า AN เปิดตารางได้ 41h 4Eh แปลงเป็นเลขฐานสองได้เป็น 01000001, 01001110
Even Partity หมายถึงจำนวนบิตที่เป็น 1 เป็นเลขคู่ การคำนวณก็เพียงแต่นับจำนวนบิตที่เป็น 1 ถ้าได้เลขคู่อยู่แล้วให้เติม parity bit เป็น 0 ถ้านับได้เลขคี่ ก็เติม parity bit เป็น 1 เพื่อให้จำนวนเป็นเลขคู่
Odd Parity หมายถึงจำนวนบิตที่เป็น 1 เป็นเลขคี่ การคำนวณก็นับจำนวนบิตที่เป็น 1 ถ้าได้เลขคี่อยู่แล้วให้เติม parity เป็น 0 ถ้านับได้เลขคู ก็เติม parity bit เป็น 1 เพื่อให้จำนวนเป็นเลขคี่
ข้อมูล 7 บิต จำนวนบิต 1 Even Parity data+even parity Odd Parity data+odd parity
1000001 (41h) 2 0 01000001 (41h) 1 11000001 (C1h)
1001110 (4Eh) 4 0 01001110 (4Eh) 1 11001110 (CEh)
แนวการตอบ
โจทย์ ส่งคำว่า WIN โดยใช้ Even Parity
W = 57h = 10101112 -> 110101112 = D7h
I = 49h = 10010012 -> 110010012 = C9h
N = 4Eh = 10011102 -> 010011102 = 4Eh
ตอบ D7h C9h 4Eh
--------------------------------------------------------------------------------
เรื่องอื่นที่น่าสนใจ
รหัส EBCDIC
การตรวจจับความผิดพลาด (error detection) แบบต่าง ๆ (parity, checksum, CRC, etc.)
การตรวจแก้ความผิดพลาด (error correction) แบบต่าง ๆ (two-dimension parity, etc.)
|
 |
 |
 |
 |
Date :
19 มิ.ย. 2548 16:02:50 |
By :
ทิว |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
รักทุกคนนะ 
|
 |
 |
 |
 |
Date :
12 ก.ย. 2550 14:26:31 |
By :
นก |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สาดบกท้งหลายนี่
|
 |
 |
 |
 |
Date :
8 ต.ค. 2550 15:33:15 |
By :
L |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ่านไม่เข้าใจค่ะ
อยากอ่านเป็นค่ะ มีแหล่งข้อมูลอื่นอีกไหมค่ะ
หรือมีคำอธิบายเพิ่มเกี่ยวกับ การอ่านตาราง ascii แบบสำหรับผู้เริ่มฝึกอ่านไหมค่ะ
|
 |
 |
 |
 |
Date :
2010-08-02 10:03:30 |
By :
หมูน้อย |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
  .................
|
 |
 |
 |
 |
Date :
2011-11-21 10:29:46 |
By :
.......... |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|