การทำงานของเครื่องคอมพิวเตอร์ ใช้สัญญาณอิเลกทรอนิกส์ ซึ่งมีสองสถานะ คือ ปิด และ เปิด จึงมีการกำหนดให้ใช้ตัวเลข 0 และ 1 แทนสถานะทั้งสอง และมีการกำหนดรหัสแทนอักขระด้วยชุดของตัวเลขซึ่งประกอบด้วย 0 และ 1 ซึ่งเป็นตัวเลขในระบบเลขฐานสอง(ninary digit)
2.1 รหัสแทนข้อมูล
จากที่กล่าวมาแล้วว่า สารสนเทศ คือ ข้อมูลที่ผ่านการประมวลผล การรประมวลผลข้อมูล ส่วนใหญ่จะใช้คอมพิวเตอร์ ช่วยเพื่อความรวดเร็ว แม่นยำ ดังนั้นข้อมูลที่เก็บรวบรวมมาเพื่อให้คอมพิวเตอร์ประมวลผล จะต้องอยู่ในรูปที่คอมพิวเตอร์เข้าใจ จึงจำเป็นต้องหาวิธีแทนข้อมูลซึ่งเป็นชุดตัวอักขระ
ปกติการทำงานของเครื่องคอมพิวเตอร์ใช้สัญญาณอิเล็กทรอนิกส์ซึ่งมี 2 สถานะคือ ปิดและเปิด จึงมีการกำหนดใช้ตัวเลข 0 และ 1 แทนสถานะทั้งสอง และมีการกำหนดรหัสแทนอักขระด้วยชุดของตัวเลขซึ่งประกอบไปด้วยเลข 0 และ 1 ซึ่งเป็นตัวเลขในระบบเลขฐานสอง (binary digit)
การจัดเก็บข้อมูลในหน่วยความจำของคอมพิวเตอร์มีหน่วยเล็กที่สุดคือ บิต (bit) ซึ่งสามารถใช้แทนเลขฐานสอง 1 หลัก ไบต์ (byte) ประกอบด้วย 8 บิต ซึ่งแทนเลขฐานสองได้ 8 หลัก หน่วยความจำแต่ละไบต์จะมีหมายเลขกำกับอยู่สำหรับเรียกใช้เรียกว่า เลขที่ตำแหน่ง (address) ข้อมูลที่ป้อนเข้าเครื่องคอมพิวเตอร์จะถูกเปลี่ยนเป็นรหัสเก็บไว้ในหน่วยความจำเพื่อใช้ในการประมวลผลต่อไป
รหัสแทนข้อมูลโดยทั่วๆ ไป ที่ใช้กันแพร่หลาย ได้แก่ รหัสแอสกี (ASCII : American Standard Code for Information Interchange) และ รหัส เอบซีดิก (EBCDIC : Extended Binary Code Decimal Interchange Code) ส่วนรหัสแทนข้อมูลที่เป็น ตัวเลข หรือ รหัสจำนวนจะมีการกำนดหลายรูปแบบ ตามชนิดของค่าของจำนวนนั้นๆ
เพื่อให้การแทนอักขระต่าง ๆ ด้วยตัวเลขฐานสอง ได้ครบจึงมีการกำหนดให้ใช้ตัวเลขฐานสอง 8 บิต ซึ่งเรียกว่า 1 ไบต์ (byte) แทนอักขระ 1 ตัว เช่น
0 = 1 บิต (bit)
1 = 1 บิต (bit)
สามารถนำมาแทนข้อมูล เช่น
รหัสแอสกี (ASCII)
การกำหนดรหัสแทนข้อมูลขึ้นอยู่กับชนิดของข้อมูลและคอมพิวเตอร์
รหัสที่ใช้แทนตัวอักขระที่เป็นมาตรฐานแบบหนึ่ง เรียกว่า รหัสแอสกี (American Standard Code for Information Interchange : ASCII) รหัสแอสกีเป็นรหัสที่กำหนดขึ้นโดย หน่วยงานกำหนดมาตรฐานของสหรัฐอเมริกาใช้กันแพร่หลายกับระบบคอมพิวเตอร์ทั่วไปและระบบสื่อสารข้อมูล รหัสอักขระแต่ละตัวประกอบด้วย 8 บิต คือ
บิตที่ | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ตัวเลขฐานสอง 8 บิตหรือ 1 ไบต์ สามารถใช้แทนรหัสต่างๆ ได้ถึง 256 ตัว แต่รหัสตัวอักษรภาษาอังกฤษทั้งหมดมีจำนวนรวมกันไม่เกิน 128 ตัว
ดังนั้นสำนักงานมาตรฐานผลิตภัณฑ์อุสาหกรรมจึงได้กำหนดภาษาไทยเพิ่มเติมเพื่อใช้ในงานสารสนเทศเป็นภาษาไทยได้ เช่น
10100001 = 1 ไบต์ (byte) | ใช้แทนตัวอักษร ก |
10100010 = 1 ไบต์ (byte) | ใช้แทนตัวอักษร ข |
10100100 = 1 ไบต์ (byte) | ใช้แทนตัวอักษร ค |
ตัวอย่าง คำว่า "แดง" เขียนแทนได้ด้วย | |
11100001 10110100 10100111 |
รหัสเอบซิดิก (EBCDIC)
รหัสเอบซิดิก (EBCDIC) ย่อมาจาก Extened Binary Coded Decimal Interchange Code เป็นการกำหนดรหัสแทนตัวอักขระที่ใช้กันแพร่หลายอีกแบบหนึ่ง การกำหนดรหัสจะใช้ 8 บิต หรือ 1 ไบต์ต่อ 1 อักขระ เหมือนกับรหัสแอสกีแต่แบบของรหัสที่กำหนดจะแตกต่างกัน คือ
3. ระบบเลขฐาน
เลขฐาน หมายถึง กลุ่มข้อมูลที่มีจำนวนหลัก (Digit) ตามชื่อของฐาน นั้นๆเช่น เลขฐานสอง ฐานแปด และฐานสิบ ประกอบด้วยข้อมูลตัวเลขจำนวนสองหลัก (0-1) แปดหลัก (0-7) และสิบหลัก (0-9) ตามลำดับ
ระบบคอมพิวเตอร์มีการใช้ระบบเลขฐาน 4 แบบ ประกอบด้วย
1) เลขฐานสอง (Binary Number)
2) เลขฐานแปด (Octal Number)
3) เลขฐานสิบ (Decimal Number)
4) เลขฐานสิบหก (Hexadecimal Number)
1) เลขฐานสอง (Binary Number)
คือตัวเลขที่มีค่าไม่ซ้ำกันสองหลัก ( 0 และ 1) เป็นเลขฐานเดียวที่เข้ากันได้กับ Hardware ของเครื่องคอมพิวเตอร์ได้โดยตรง เพราะการใช้เลขฐานอื่น จะสร้างความยุ่งยากให้กับเครื่องคอมพิวเตอร์อย่างมาก เช่น เลขฐานสิบมีตัวเลขที่เป็นสถานะที่ต่างกันถึง 10 ตัว ในขณะที่ระบบไฟฟ้ามีเพียง 2 สถานะ
ซึ่งในช่วงเวลาหนึ่งๆมีเพียงสถานะเดียวเท่านั้น แต่ละหลักของเลขฐานสอง เรียกว่า Binary Digit (BIT)
2) เลขฐานแปด (Octal Number)
เลขฐานแปด มีความสัมพันธ์กับเลขฐานสอง คือ เลขฐานสองจำนวน 3 หลัก แทนด้วยเลขฐานแปด 1 หลัก ดังนั้นเราจึงสามารถเขียนเลขฐานสอง 6 บิท แทนด้วยเลขฐานแปด 2 บิท การใช้เลขฐานแปดแทนเลขฐานสองทำให้จำนวนบิทสั้นลง
3) เลขฐานสิบ (Decimal Number)
คือตัวเลขที่มีค่าไม่ซ้ำกันสิบหลัก (0,1,2,…,9) เป็นเลขฐานที่มนุษย์คุ้นเคยและใช้ในชีวิตประจำวันมากที่สุด ตัวเลขที่มีจำนวนมากกว่า 9 ให้ใช้ 10 ซึ่งเป็นการกลับไปใช้เลข 1 และ 0 อีก เพียงแต่ค่าของ 1 เปลี่ยนไปเป็น 10 เท่าของตัวมันเอง เช่น 333 (สามร้อยสามสิบสาม) แม้จะใช้ตัวเลข 3 ทั้งหมด แต่ตำแหน่งของตัวเลขย่อมมีความหมายตามตำแหน่งของแต่ละหลักนั้น กล่าวคือ หลักหน่วยน้อยกว่าหลักสิบ 10 เท่า หลักสิบน้อยกว่าหลักร้อย 10 เท่า ตามลำดับ
4) เลขฐานสิบหก (Hexadecimal Number)
เลขฐานสิบหก มีความสัมพันธ์กับเลขฐานสอง คือ เลขฐานสองจำนวน 4 หลัก แทนด้วยเลขฐานสิบหก 1 หลัก ดังนั้นเราจึงสามารถเขียนเลขฐานสอง 8 บิทแทนด้วยเลขฐานสิบหก 2 บิท การใช้เลขฐานสิบหกแทนเลขฐานสองทำให้จำนวนบิทสั้นลง
ระบบเลขฐานสิบหก (Hexadecimal) ฐานของมันจะมีค่าเป็น 16 ซึ่งจะมีตัวเลขที่ไม่ซ้ำกันอยู่ทั้งหมด 16 ตัว คือ 0 1 2 3 4 5 6 7 8 9 A
B C D E F (ตัวอักษร 6 ตัว แทน ตัวเลข 10 –15 ตามลำดับ)
ระบบจำนวน | จำนวนหลัก (Digit) | |||||||||||||||
ฐานสอง | 0 | 1 | ||||||||||||||
ฐานแปด | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ||||||||
ฐานสิบ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ||||||
ฐานสิบหก | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
3.1 การแปลงเลขฐาน
ระบบเลขฐานสอง มีสัญลักษณ์ที่ใช้เพียงสองตัว คือ 0 และ 1 ถ้าเปรียบเทียบเลขฐานสอง กับเลขฐานสิบแล้ว ค่าของหลักที่ถัดจากหลักที่น้อยที่สุด (LSD) ขึ้นไป จะมีค่าเท่ากับ ฐานสองยกกำลังหมายเลขหลัก แทนที่จะเป็น 10 ยกกำลัง ดังนี้
เลขฐานสิบ | เลขฐานสอง | ||||
100 | = 1 | หน่วย | 20 | = 1 | หนึ่ง |
101 | = 10 | สิบ | 21 | = 2 | สอง |
102 | = 100 | ร้อย | 22 | = 4 | สี่ |
103 | = 1000 | พัน | 23 | = 8 | แปด |
ระบบเลขฐานสองเกิดจากการใช้ตัวเลขเพียง 2 ตัว คือ 0 และ 1 ดังนั้น สมการคือ
N = ... + (d3 x 23) + (d2 x 22) + (d1 x 21) + (d0 x 20)
เมื่อ d คือค่า 0 หรือ 1
เช่น 1101 = (1 x 23) + (1 x 22) + (0 x 21) + (1 x 20)
เพื่อตัดปัญหายุ่งยาก ในการแทนค่าของเลขระบบต่างๆ เรานิยมเขียน ตัวเลขอยู่ในวงเล็บ และเขียนค่าของฐานนั้น อยู่นอกวงเล็บ เช่น (101101)2 = (45)10
สำหรับเศษส่วน จะเขียนค่าของเศษส่วนอยู่หลังจุด (Binary Point) ยกกำลังเป็นลบ เพิ่มขึ้นตามลำดับ ดังตัวอย่าง
(0.1011)2 = (1 x 2-1) + (0 x 2-2) + (1 x 2-3) + (1 x 2-4)
3.1.1 การแปลงเลขฐานสองเป็นเลขฐานสิบ
วิธีการแปลงเลขฐานสองแบบที่ 1 การกระจายค่าประจำหลัก
จากนั้นนำมาบวกรวมกันอีกครั้ง ผลลัพธ์ที่ได้จะเท่ากับค่าในเลขฐานสิบ
ตัวอย่าง 10111 มีค่าเท่ากับเท่าไรในระบบเลขฐานสิบ
วิธีทำ
1 | 0 | 1 | 1 | 1 | = | 1 x 20 |
1 | 0 | 1 | 1 | 1 | = | 1 x 21 |
1 | 0 | 1 | 1 | 1 | = | 1 x 22 |
1 | 0 | 1 | 1 | 1 | = | 0 x 23 |
1 | 0 | 1 | 1 | 1 | = | 1 x 24 |
ดังนั้น (10111)2 | = | 1 x 24 + 0 x 23 + 1 x 22 + 1 x 21 + 1 x 20 |
= | 16 + 0 + 4 + 2 + 1 | |
(10111)2 | = | 23 |
ตัวอย่าง (110111)2 มีค่าเท่ากับเท่าไรในระบบเลขฐานสิบ
วิธีทำ
N | = | 1 x 25 + 1 x 24 + 0 x 23 + 1 x 22 + 1 x 21 + 1 x 20 |
= | 32 + 16 + 0 +4 + 2 + 1 | |
1101112 | = | 5510 |
การแปลงเลขฐานสอง เป็นเลขฐานสิบ วิธีที่สอง คือ Dibble Dobble Method โดยการนำเอาเลขหลักซ้ายสุด มาวางไว้ แล้วคูณด้วย 2 จากนั้นบวกด้วยเลขบิทที่อยู่ ทางขวามือ จากนั้นนำผลลัพธ์ มาคูณด้วย 2 บอกด้วยเลขบิทต่อไป ดังนี้
เช่น ต้องการแปลง (110111)2 เป็นเลขฐานสิบ
บิทซ้ายสุด | 1 |
คูณด้วย 2 และบวกบิทถัดไป | (2 x 1) + 1 = 3 |
คูณด้วย 2 และบวกบิทถัดไป | (2 x 3) + 0 = 6 |
คูณด้วย 2 และบวกบิทถัดไป | (2 x 6) + 1 = 13 |
คูณด้วย 2 และบวกบิทถัดไป | (2 x 13) + 1 = 27 |
คูณด้วย 2 และบวกบิทถัดไป | (2 x 27) + 1 = 55 |
ดังนั้น (110111)2 = (55)10
วิธีแปลงเลขฐานสิบเป็นฐานสอง แบบที่ 2 การหาร
การแปลงเลขฐานสิบเป็นเลขฐานสองก็มีหลายวิธี แต่ที่จะแนะนำคือ การหารด้วย 2 แล้วจดค่าเศษจากการหารไว้ จนกระทั่งหารไม่ได้อีกแล้ว จากนั้นนำเศษ จากการหารแต่ละครั้ง มาไล่ลำดับจากล่างขึ้นไปหาค่าบนสุด ผลลัพธ์ที่ได้จะเท่ากับค่าในเลขฐานสอง
ตัวอย่าง 2610 มีค่าเท่ากับเท่าไรในระบบเลขฐานสอง
วิธี
2 หาร | 26 | เท่ากับ | 13 | เศษ | 0 |
2 หาร | 13 | เท่ากับ | 6 | เศษ | 1 |
2 หาร | 6 | เท่ากับ | 3 | เศษ | 0 |
2 หาร | 3 | เท่ากับ | 1 | เศษ | 1 |
2 หาร | 1 | ไม่ได้ | เศษ | 1 |
ดังแสดงตามวิธีหารสั้น
เมื่อหารไม่ได้ ให้นำค่าเศษมาเรียงต่อกัน โดยเรียงจากค่าล่างสุด ไปหาค่าบนสุด เพราะฉะนั้นจะได้ค่าเท่ากับ 11010
ดังนั้น 26 (ในฐานสิบ) จึงมีค่าเท่ากับ 110102
3.1.2 การแปลงเลขฐานสิบ เป็นฐานแปด และฐานสิบหก
การแปลงเลขฐานสิบ เป็นฐานแปด และฐานสิบหก มีลักษณะเดียวกับการแปลงเป็นเลขฐาน 2 โดยใช้ค่าฐานไปหารเพื่อหาเศษ
ตัวอย่าง
ต้องการแปลง 169 เป็นเลขฐาน 8 กระทำได้โด
8 หาร | 169 | เท่ากับ | 21 | เศษ | 1 |
8 หาร | 21 | เท่ากับ | 2 | เศษ | 5 |
8 หาร | 2 | ไม่สามารถหารได้ | เศษ | 2 |
ดังนั้น 169 เท่ากับ 2518
ต้องการแปลง 169 เป็นฐาน 16 กระทำได้โดย
16 หาร | 169 | เท่ากับ | 10 | เศษ | 9 |
16 หาร | 10 | ไม่สามารถหารได้ | เศษ | 10 | |
แต่เนื่องจาก 10 เป็นค่าที่แสดงด้วย A |
ดังนั้น 169 เท่ากับ A916
การแปลงเลขฐาน 8 หรือ 16 เป็นฐาน 10 ก็ใช้วิธีเดียวกับการแปลงเลขฐาน 2 เป็นฐาน 10 ดังตัวอย่างที่แนะนำไปก่อนแล้ว