คอมพิวเตอร์เป็นเครื่องจักรที่กลไกการทำงานพื้นฐานเป็นสองสถานะ (Binary) คือเปิดวงจรกับปิดวงจร ซึ่งสามารถแทนสถานะดังกล่าวได้ด้วยตัวเลขโดดสองตัวคือ 0 กับ 1 ข้อมูลแบบอื่นของคอมพิวเตอร์จะเกิดจากการประกอบรวมกันของเลข 0 กับ 1 เท่านั้น เราเรียกระบบเลขจำนวนที่ประกอบด้วยตัวเลข 0 กับ 1 เท่านั้นว่า “เลขฐาน 2”
ส่วนการนับของมนุษย์โดยปกตินั้น เราจะมีตัวเลขโดดอยู่สิบตัวคือ 0, 1, 2, 3, 4, 5, 6, 7, 8, และ 9 ซึ่งจะประกอบรวมกันเป็นระบบเลขจำนวนที่เรียกกันว่า “เลขฐาน 10” จะเห็นว่าระบบเลขจำนวนที่ใช้ในคอมพิวเตอร์มีความแตกต่างจากระบบเลขจำนวนที่มนุษย์ใช้กันโดยปกติ ดังนั้นเราจะต้องเรียนรู้ถึงทักษะในการคำนวณของระบบเลขจำนวนทั้งสองแบบรวมถึงวิธีการเปลี่ยนระบบเลขจำนวนไปมา
2.1 ความหมายของตัวเลขในหลักต่าง ๆ
ในระบบเลขฐานสิบนั้น ค่าของเลขโดด ณ ตำแหน่งใด ก็คือค่าของเลขโดดนั้นคูณด้วยสิบยกกำลังของตำแหน่งนั้น เช่น 12345 หมายความว่า ค่า 5 อยู่ในตำแหน่งหลักหน่วยซึ่งค่าของสิบยกกำลังของหลักหน่วยคือ 100 ค่า 4 อยู่ในตำแหน่งของหลักสิบ (101) ค่า 3 อยู่ในตำแหน่งของหลักร้อย (102) ค่า 2 อยู่ในตำแหน่งของหลักพัน (103) และค่า 1 อยู่ในตำแหน่งของหลักหมื่น (104) ซึ่ง 12345 สามารถเขียนอยู่ในรูปผลบวกทางคณิตศาสตร์ได้ดังนี้
12345 = (1 x 104) + (2 x 103) + (3 x 102) + (4 x 101) + (5 x 100)
= 10000 + 2000 + 300 + 40 + 5
จะเห็นว่าเลขกำลังของสิบจะเริ่มต้นจากศูนย์ที่หลักหน่วย แล้วเพิ่มขึ้นหนึ่งทุกครั้งในหลักถัดมาทางด้านซ้ายมือ ในกรณีที่เลขเป็นจำนวนทศนิยม ให้เริ่มกำลังศูนย์ที่หลักหน่วย แล้วลดกำลังลงหนึ่งทุกครั้งในหลักถัดไปทางด้านขวามือ ส่วนทางด้านซ้ายมือก็จะเป็นไปในรูปแบบเดิม เช่น 12.34 จะสามารถเขียนได้เป็น
12.34 = (1 x 101) + (2 x 100) + (3 x 10-1) + (4 x 10-2)
= 10 + 2 + 0.3 + 0.04
เราสามารถใช้หลักการเดียวกันนี้กับเลขฐานสองเพื่อหาค่าของจำนวนดังกล่าวในรูปของเลขฐานสิบ (ในความเป็นจริงแล้วสามารถที่จะนำไปใช้ได้กับเลขทุกฐาน) เช่น 1011.012 จะเขียนได้เป็น
1011.012 = (1 x 23) + (0 x 22) + (1 x 21) + (1 x 20) + (0 x 2-1) + (1 x 2-2)
= 8 + 0 + 2 + 1 + 0 + 0.25
= 11.25
2.1 การแปลงค่าจากเลขฐานสิบเป็นเลขฐานสอง
การแปลงเลขฐานสิบเป็นฐานสองจะมีขั้นตอนอยู่สองขั้นตอนคือ การแปลงเลขส่วนที่อยู่หน้าทศนิยมและการแปลงเลขส่วนที่อยู่หลังทศนิยม
การแปลงเลขในส่วนที่อยู่หน้าทศนิยม ให้นำเลขดังกล่าวมาหารด้วยสองไปเรื่อย ๆ จนกว่าจะได้ผลลัพธ์เป็นศูนย์ โดยการหารแต่ละครั้งจะได้เศษเป็น 0 หรือ 1 ลำดับของเศษที่เกิดขึ้นก็คือกำลังของเลขสอง กล่าวคือ เศษที่ได้จากการหารครั้งแรกจะเป็นเลขในหลัก 20, เศษที่เกิดจากการหารครั้งที่สองจะเป็นเลขในหลัก 21 เรื่อยไป
ตัวอย่าง จงเปลี่ยนค่า 1310 ให้เป็นเลขฐานสอง
6 เศษ 1
3 เศษ 0
1 เศษ 1
0 เศษ 1
\ 1310 = 11012
ส่วนการแปลงเลขหลังจุดทศนิยมนั้น จะใช้วิธีคูณตัวเลขนั้นด้วยสองไปเรื่อย ๆ จนกว่าจะมีเลขหลังจุดทศนิยมเป็นศูนย์ ซึ่งในการคูณแต่ละครั้งอาจจะมีการทดค่าหลังจุดทศนิยมขึ้นมาเป็นตัวเลข 1 หน้าจุดทศนิยมหรือไม่ก็ได้ ในการคูณแต่ละครั้งก็เท่ากับว่าเราเลื่อนการคำนวณจากหลักแรกหลังจุดทศนิยม (2-1) ไปยังหลักต่อไป
ตัวอย่าง จงเปลี่ยนค่า 0.2510 ให้เป็นเลขฐานสอง
0.25
.01
\ 0.2510 = 0.012
ดังนั้นจากตัวอย่างข้างต้นสามารถสรุปได้ว่า 13.2510 = 1101.012
2.2 การบวกและการลบเลขฐานสอง
การบวกเลขฐานสองมีหลักการเหมือนกับการบวกเลขฐานสิบ การบวกเลขในฐานสิบนั้นเมื่อผลบวกในหลักใดมีค่ามากกว่า 9 ก็จะต้องมีการทดเลข 1 ไปยังหลักถัดไป ซึ่งหลักเกณฑ์การทดเลขนี้ยังสามารถใช้ได้กับเลขฐานสอง เพียงแต่ว่าเลขโดดที่สูงที่สุดของเลขฐานสองคือ 1 ดังนั้นถ้าผลบวกมีค่าเกิน 1 ก็จะมีการทดไปยังหลักถัดไปทางซ้าย รูปแบบการบวกเป็นดังนี้
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 ทด 1
ตัวอย่าง จงบวกเลข 1011.1012 กับ 110.0112
1 0 1 1 . 1 0 1
+ 1 1 0 . 0 1 1
1 0 0 1 0 . 0 0 0
การลบเลขเป็นการดำเนินการที่ผกผันกับการบวก ในการลบ ถ้ามีการลบเลขที่มากกว่าจากเลขที่น้อยกว่า ต้องมีการขอยืมจากเลขในหลักถัดไปทางซ้ายมา 1 รูปแบบการลบเป็นดังนี้
0 - 0 = 0
0 - 1 = 1 ขอยืม 1
1 - 0 = 1
1 - 1 = 0
ตัวอย่าง จงลบเลข 1001.11 กับ 101.1
1 0 0 1 . 1 1
- 1 0 1 . 1 0
1 0 0 . 0 1
2.1 การคูณและการหารเลขฐานสอง
การคูณและการหารของเลขฐานสอง ก็มีหลักการเช่นเดียวกับเลขฐานสิบ เพียงแต่มีสูตรคูณแค่แม่ 0 กับ 1 เท่านั้น อีกทั้งการหารด้วยศูนย์ก็ไม่มีความหมายเช่นเดียวกับการหารในระบบเลขฐานสิบ ตารางการคูณและการหารของระบบเลขฐานสองคือ
0 x 0 = 0
0 x 1 = 0
1 x 0 = 0
1 x 1 = 1
0 ¸ 1 = 0
1 ¸ 1 = 1
ตัวอย่าง จงคูณเลขฐานสอง 1.01 x 10.1
1 . 0 1
1 0 1
0 0 0
1 0 1
จงหารเลขฐานสอง 11001 ¸ 101
101
101
เรามีเลขฐานสองจำนวนสี่หลัก ก็จะได้เลขฐานสองที่มี 16 รูปแบบแตกต่างกัน ซึ่งสามารถใช้เลขฐานสิบหกแทนแต่ละรูปแบบของเลขฐานสองได้ แต่เนื่องจากเรามีเลขโดดใช้งานกันแค่สิบตัว ดังนั้นจึงมีการนำตัว A – F มาแทนค่าเลขโดดที่มีค่า 10 – 15 แทน ทำให้เลขฐานสิบหกมีเลขโดดคือ 0 – 9 และ A – F
เลขฐานสิบ | เลขฐานสอง | เลขฐานแปด | เลขฐานสิบหกๆ |
0 | 0000 | 0 | 0 |
1 | 0001 | 1 | 1 |
2 | 0010 | 2 | 2 |
3 | 0011 | 3 | 3 |
4 | 0100 | 4 | 4 |
5 | 0101 | 5 | 5 |
6 | 0110 | 6 | 6 |
7 | 0111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
2.1 ระบบเลข BCD (Binary Code Decimal)
ระบบเลข BCD มีชื่อเรียกอีกชื่อหนึ่งว่า Packed Decimal เป็นวิธีการหนึ่งที่จะทำให้การแปลงเลขระหว่างฐานสองกับฐานสิบง่ายขึ้นโดยใช้วิธีเดียวกับการสร้างเลขฐานสิบหก โดยจัดกลุ่มให้เลขฐานสอง 4 บิต เป็นเลขฐานสิบ 1 หลัก แต่จำนวนเลขโดดของเลขฐานสิบมีค่าน้อยกว่ารูปแบบของเลขฐานสองที่เป็นไปได้ใน 4 บิต ดังนั้นจึงมีเลขฐานสองบางรูปแบบที่ไม่ได้ถูกใช้งาน สาเหตุที่ต้องจัดกลุ่มเลขฐานสองให้เป็น 4 บิตแทนที่จะเป็นค่าอื่น ๆ เพราะจำนวนเลขโดดของเลขฐานสองมีค่าเท่ากับ 10 ซึ่งอยู่ระหว่าเลขฐานสอง 3 บิตกับ 4 บิต นั่นเอง
ปกติแล้วเรามักจะไม่นำเลข BCD ไปคำนวณแบบซับซ้อน มักจะนำไปบวกลบกันเท่านั้นซึ่งการบวกลบกันของเลข BCD จะต้องทำทีละ 1 นิบเบิล และต้องปรับค่าผลลัพธ์เพื่อเลี่ยงเลขฐานสองที่ไม่ได้ใช้งานด้วย