360 likes | 687 Views
การแทนรหัสข้อมูล. Base numbers Data representation. ระบบเลขฐาน. เลขฐานสอง (Binary Numbers) เลขฐานแปด (Octal Numbers) เลขฐานสิบ (Decimal Numbers) เลขฐานสิบหก (Hexadecimal Numbers) การคำนวณของเลขฐาน การแปลงเลขฐาน. ระบบเลขฐาน. ระบบตัวเลข เลขฐาน สัญลักษณ์ที่ใช้.
E N D
การแทนรหัสข้อมูล • Base numbers • Data representation
ระบบเลขฐาน • เลขฐานสอง (Binary Numbers) • เลขฐานแปด (Octal Numbers) • เลขฐานสิบ (Decimal Numbers) • เลขฐานสิบหก (Hexadecimal Numbers) • การคำนวณของเลขฐาน • การแปลงเลขฐาน
ระบบเลขฐาน ระบบตัวเลขเลขฐานสัญลักษณ์ที่ใช้ Binary2 01 Ternary 3 012 Quaternary4 0123 Quandary 5 01234 Senary 6 012345 Septenary 7 0123456 Octenary (Octal) 8 01234567 Nonary 9 012345678 Denary (Decimal) 10 0123456789 Undenary 11 0123456789A Duodenary 12 0123456789AB Tredenary 13 0123456789ABC Quatuordenary 14 0123456789ABCD Quidenary 15 0123456789ABCDE Hexadenary (Hexadecimal) 16 0123456789ABCDEF
ตัวเลขในฐานต่างๆ • ฐาน 2 มีเลข 0,1 • ฐาน 8 มีเลข 0,1,2,3,4,5,6,7 • ฐาน 10 มีเลข 0,1,2,3,4,5,6,7,8,9 • ฐาน 16 มีเลข 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
ระบบเลขฐาน (ฐาน 2,8,10,16) • Place Value: ระบบเลขที่แต่ละหลักมีค่าประจำหลัก • ค่าประจำหลัก คือ ค่าของเลขฐานนั้นๆ ยกกำลังตามตำแหน่งหลักเริ่ม จาก ศูนย์ • Least significant digit : คือเลขที่มีค่าประจำหลักน้อย • Most significant digit : คือเลขที่มีค่าประจำหลักสูง • การเขียนเลขฐานต้องมีค่าฐานกำกับ (ยกเว้นฐาน 10) 58,750,350 Most Significant Digit Least Significant Digit
เลขฐานสิบ มีค่า = (5x104)+(4x103)+(3x102)+(2x101)+(1x100)+(6x10-1)+(7x10-2)+(8x10-3) = 54,321.678
เลขฐานสอง มีค่า = (1x24)+(1x23)+(0x22)+(1x21)+(0x20)+(0x2-1)+(1x2-2)+(1x2-3)= 11010.0112 26.87510
เปรียบเทียบฐานสอง-สิบเปรียบเทียบฐานสอง-สิบ เลขฐานสิบ7 6 5 4 3 2 1 0 ค่าเลขฐานสอง 5 0000 0101 1012 7 0000 0111 1112 10 0000 1010 10102 13 0000 1101 11012 20 0001 0100 101002 32 0010 0000 1000002 45 0010 1101 1011012 54 0011 0110 1101102
เลขฐานแปด มีค่า = (2x84)+(7x83)+(6x82)+(5x81)+(3x80) = 276538 12,20310
เปรียบเทียบฐานสอง-แปด-สิบเปรียบเทียบฐานสอง-แปด-สิบ เลขฐานสองเลขฐานแปดเลขฐานสิบ 000 100 000 408 3210 000 101 101 558 4510 000 110 110 668 5410 010 010 101 2258 14910 011 010 111 3278 21510 100 101 110 4568 30210 101 111 110 5768 38210
เลขฐานสิบหก มีค่า = (8x164)+(7x163)+(Cx162)+(5x161)+(Ax160) = 87C5A16 556,12210
เปรียบเทียบฐานสอง-แปด-สิบ-สิบหกเปรียบเทียบฐานสอง-แปด-สิบ-สิบหก เลขฐานสองเลขฐานแปดเลขฐานสิบเลขฐานสิบหก 000 100 000 408 3210 2016 000 101 101 558 4510 2D16 000 110 110 668 5410 3616 010 010 101 2258 14910 9516 011 010 111 3278 21510 D716 100 101 110 4568 30210 12E16 101 111 110 5768 38210 17E16
เปรียบเทียบฐานสอง-แปด-สิบหกเปรียบเทียบฐานสอง-แปด-สิบหก เลขฐานสองเลขฐานแปดเลขฐานสองเลขฐานสิบหก 000 100 0004080010 0000 2016 000 101 101558 0010 11012D16 000 110 1106680011 01103616 010 010 10122581001 0101 9516 011 010 11132781101 0111 D716 100 101 11045680001 0010 1110 12E16 101 111 11057680001 0111 111017E16
รหัสข้อมูล • รหัสข้อมูล คือ รหัสที่ใช้แทนตัวเลข ตัวอักษร หรือสัญลักษณ์พิเศษต่างๆ ที่ใช้ในโปรแกรม ไฟล์ข้อมูลเมื่อมีการใช้เครื่องคอมพิวเตอร์ • รหัสภายนอกเครื่อง (External Code) • ใช้บันทึกข้อมูลที่ยังอยู่ภายนอกเครื่อง • เช่น รหัสที่ใช้กับบัตรเจาะรู เป็นการสร้างรูปแบบของการเจาะรูในแต่ละแถว ซึ่งหมายถึงหนึ่งอักขระ • รหัสภายในเครื่อง (Internal Code) • Pure Binary Code • BCD (Binary Code Decimal) • EBCDIC (Extended Binary Code Decimal Interchange Code) • ASCII (American Standard Code Information Interchange)
รหัสข้อมูล • การแปลงเลขฐาน 2 กำหนดรหัสในคอมพิวเตอร์ • เช่น ระบบเลขฐาน 10 เมื่อบวก 3 เข้าทุกตัว • แล้วแปลงเป็นเลขฐาน 2 • ดังนั้น 83910 แทนด้วยรหัส 1011 0110 1100 • ระบบเลขฐาน 10 + 3 • 8 + 3 = 11 • 3 + 3 = 6 • 9 + 3 = 12 • ระบบเลขฐาน 2 • 1011 • 0110 • 1100
รหัสข้อมูล • รหัสของเกรย์ (Gray Code) ได้จากการเปลี่ยนจำนวนในระบบเลขฐาน 2 • หลักที่ 1 ได้จากตัวเลขตัวแรกของระบบเลขฐาน 2 • หลักที่ 2 ได้จากตัวเลขตัวแรกบวกกับตัวที่สองในระบบเลขฐาน 2 • หลักที่ 3 ได้จากตัวเลขตัวที่สองบวกกับตัวที่สามในระบบเลขฐาน 2 • หลักที่ 4 ได้จากตัวเลขตัวที่สามบวกกับตัวที่สี่ในระบบเลขฐาน 2 ระบบเลขฐาน 10 0 1 2 3 4 5 6 7 8 9 ระบบเลขฐาน 2 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Gray Code 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101
รหัสข้อมูล • รหัส 8421 เป็นรหัสที่แปลงมาจากระบบเลขฐาน 2 • 8421 มาจากค่าประจำตำแหน่งของ • 1(8) + 1(4) + 1(2) + 0(1) • เช่นสามารถเขียน 192510 ด้วยรหัส 8421 ได้ดังนี้ • 1 = 0(8) + 0(4) + 0(2) + 1(1) 0001 • 9 = 1(8) + 0(4) + 0(2) + 1(1) 1001 • 2 = 0(8) + 0(4) + 1(2) + 0(1) 0010 • 5 = 0(8) + 1(4) + 0(2) + 1(1) 0101 • ดังนั้น 192510 แทนด้วย 0001 1001 0010 0101
BCD • เป็นรหัสที่ใช้เลขฐาน 2 แทนเลขฐาน 10 • 6 บิต แทน 1 สัญลักษณ์ • 2 บิตแรกเป็น Zone Bit • 4 บิตหลังเป็น Numeric Bit • ข้อมูลที่เป็นตัวเลข Zone Bit จะกำหนดเป็น 00 • 7 = 00 0111 • 734 = 000111000011000100 Numeric Bit Zone Bit
BCD (ต่อ) • ข้อมูลที่เป็นตัวอักษร Zone Bit จะแบ่งเป็น 3 กลุ่ม • A – I แทนด้วย 11 • J – R แทนด้วย 10 • S –Z แทนด้วย 01
EBCDIC • เป็นรหัสที่ขยายมาจาก BCD • โดยบริษัท IBM ใช้กับเครื่องคอมพิวเตอร์ 360 • ขยายรหัสออกเป็น 8 bit แทนสัญลักษณ์ 1 ตัว • ให้ 4 bit แรกเป็น Zone Bit • ให้ 4 bit หลังเป็น Numeric Bit Zone Bit Numeric Bit
EBCDIC • การส่งข้อมูลหรือคำสั่งในคอมพิวเตอร์ • ในรูปเลขฐาน 16 (Hexadecimal) • จากนั้นจึงแปรเป็นเลขฐาน 2 (Hexadecimal Loader) • ข้อมูลที่เป็นตัวเลขจะมี ZoneBit กำหนดเป็น 1111 • 9 = 1111 1001 • 2360 = 11110010111100111111011011110000 • ข้อมูลที่เป็นตัวอักษร Zone Bit จะกำหนดดังนี้ • A – I แทนด้วย 1100 = C16 • J – R แทนด้วย 1101 = D16 • S –Z แทนด้วย 1110 = E16 • a – i แทนด้วย 1000 = 816 • j – r แทนด้วย 1001 = 916 • s –z แทนด้วย 1010 = A16
ASCII • รหัสมาตรฐานของวงการคอมพิวเตอร์ • โดย ISO (International Standardization Organization) • ในยุคเริ่มแรกเป็นแบบ 7 bit ใช้กับสัญลักษณ์ในภาษาอังกฤษ • ภายหลังมีการขยายขอบเขตเป็น 8 bit เพื่อรองรับภาษาอื่นๆ • เก็บเป็นเลขฐาน 10 เพื่อง่ายต่อการจำ เช่น อักษร “A” • “A” 6510 4116 010000012
Computer Code and Binary Arithmetic • EX1การเข้ารหัสและถอดรหัส (Encoding and Decoding) • จงเข้ารหัส (Encoding) ของ “Jon Loves Ann.” ในรูปของ ASCII • จงถอดรหัส ASCII ของข้อความต่อไปนี้ • 011 0001 010 1001 011 0001 011 1101 011 0010 วิธีทำ J 100 1010 o 110 1111 n 110 1110 Space 010 0000 L 100 1100 o 110 1111 v 111 0110 e 110 0101 s 111 0011 Space 010 0000 A 100 0001 n 110 1110 n 110 1110 . 110 0000 Jon Loves Ann. 10010101101111110111001000001001100110111111101101100101111001101000001000001110111011011101100000
Computer Code and Binary Arithmetic • EX1 (ต่อ) • 011 0001 010 1001 011 0001 011 1101 011 0010 วิธีทำ ดังนั้น 011 0001 010 1001 011 0001 011 1101 011 0010 “1 + 1 = 2” 011 0001 = 1 010 1011 = + 011 0001 = 1 011 1101 = = 011 0010 = 2
Computer Code and Binary Arithmetic • EX2 จงเข้ารหัสชื่อนาม-สกุลของตนเองในรูป ASCII • ภาษาอังกฤษ • ภาษาไทย วิธีทำ “Chaiyanan Sompong” ดังนั้นจะได้ 1000011 1101000 1100001 1101001 1111001 … C 100 0011 h 110 1000 a 110 0001 i 110 1001 y 111 1001 a 110 0001 n 110 1110 a 110 0001 n 110 1110 Space 010 0000 S 101 0011 o 110 1111 m 110 1101 p 111 0000 o 110 1111 n 110 1110 g 110 0111
การเข้าและถอดรหัสแบบ BASE64 • Information Security • การเปลี่ยนชุด string หนึ่งไปเป็นอีกชุด string หนึ่ง • ป้องกันการเข้าถึงข้อมูล • http://www.faqs.org/rfcs/rfc3548.html • BASE64 คือรหัสข้อมูลที่ใช้เลขฐาน 2 จำนวน 6 bit • แทนตัวอักษรภาษาอังกฤษและตัวเลข
การเข้าและถอดรหัสแบบ BASE64 ตารางรหัส BASE64
การเข้าและถอดรหัสแบบ BASE64 ตารางรหัส BASE64
การเข้าและถอดรหัสแบบ BASE64 • ขั้นตอนการเข้ารหัสแบบ BASE64 EX3 จงเข้ารหัส “Chaiyanan” ด้วย BASE64 วิธีทำ เปลี่ยน “Chaiyanan” ให้อยู่ในรูปของเลขฐาน 2 โดย ASCII จาก EX2 เติม bit 0 เข้าไป bit แรกสุดให้ครบ 8 bit จะได้ว่า จากนั้นจัดเรียง bit ใหม่จากด้านซ้ายให้เป็นกลุ่มละ 6 bit จะได้ 01000011 01101000 01100001 01101001 01111001 01100001 01101110 01100001 01101110 010000 110110 100001 100001 011010 010111 100101 100001 011011 100110 000101 101110
การเข้าและถอดรหัสแบบ BASE64 • ขั้นตอนการเข้ารหัสแบบ BASE64 EX3 (ต่อ) เปลี่ยนเลขฐาน 2 แบบ 6 bit ที่ได้ให้เป็นเลขฐาน 10 จะได้ เมื่อนำไปเปรียบเทียบกับตาราง BASE64 จะได้อักษรดังนี้ 010000 110110 100001 100001 011010 010111 100101 100001 011011 100110 000101 101110 เลขฐาน 2 เลขฐาน 10 16 52 33 33 26 23 37 33 27 38 5 46 Q2hhaXlhbmFu
การเข้าและถอดรหัสแบบ BASE64 • กรณีที่เมื่อมีการจัดกลุ่มเลขฐาน 2 กลุ่มละ 6 bit • ถ้า bit กลุ่มสุดท้ายมี 2 หรือ 4 bit ให้เพิ่ม bit 0 เข้าไปให้ครบ 6 bit • โดยใน BASE64 จะนับ bit สุดท้ายที่เป็น 00 แทนด้วย = • เช่น xxxxxx xxxxxx … … … 011101 110000 • เมื่อเปลี่ยนเป็นรหัส BASE64 จะได้ … dw== • ขั้นตอนการถอดรหัส BASE64 • นำเอาชุดของ string เปลี่ยนเป็นเลขฐาน 2 ตามตาราง BASE64 • จัดกลุ่มของเลขฐาน 2 เป็นกลุ่มละ 8 bit • นำตัวเลขกลุ่มละ 8 bit ไปเทียบกับตาราง ASCII • จะได้ string ของ ACSII
การเข้าและถอดรหัสแบบ BASE64 • EX4 จงถอดรหัส BASE64 ของ “VGhhaVNoYWRvdw==” วิธีทำ นำข้อความมาเปรียบเทียบกับตาราง BASE64 ได้เลขฐาน 10 คือ 21 6 33 33 26 21 13 40 24 22 17 47 29 48 เปลี่ยนเป็นเลขฐาน 2 จะได้...