ระบบเลขฐาน
เลขฐาน หมายถึง กลุ่มข้อมูลที่มีจำนวนหลัก (Digit) ตามชื่อของฐาน นั้นๆเช่น เลขฐานสอง ฐานแปด และฐานสิบ ประกอบด้วยข้อมูลตัวเลขจำนวนสองหลัก (0-1) แปดหลัก (0-7) และสิบหลัก (0-9) ตามลำดับ ดังรูป
ระบบคอมพิวเตอร์มีการใช้ระบบเลขฐาน 4 แบบ ประกอบด้วย 1) ระบบคอมพิวเตอร์มีการใช้ระบบเลขฐาน 4 แบบ ประกอบด้วย 1).เลขฐานสอง (Binary Number) 2).เลขฐานแปด (Octal Number) 3).เลขฐานสิบ (Decimal Number) 4).เลขฐานสิบหก (Hexadecimal Number)
เลขฐานสอง คือตัวเลขที่มีค่าไม่ซ้ำกันสองหลัก ( 0 และ 1) เป็นเลขฐานเดียวที่เข้ากันได้กับ Hardware ของเครื่องคอมพิวเตอร์ได้โดยตรง เพราะการใช้เลขฐานอื่น จะสร้างความยุ่งยากให้กับเครื่องคอมพิวเตอร์อย่างมาก เช่น เลขฐานสิบมีตัวเลขที่เป็นสถานะที่ต่างกันถึง 10 ตัว ในขณะที่ระบบไฟฟ้ามีเพียง 2 สถานะ ซึ่งในช่วงเวลาหนึ่งๆมีเพียงสถานะเดียวเท่านั้น แต่ละหลักของเลขฐานสอง เรียกว่า Binary Digit (BIT)
เลขฐานแปด เลขฐานแปด มีความสัมพันธ์กับเลขฐานสอง คือ เลขฐานสองจำนวน 3 หลัก แทนด้วยเลขฐานแปด 1 หลัก ดังนั้นเราจึงสามารถเขียนเลขฐานสอง 6 บิท แทนด้วยเลขฐานแปด 2 บิท การใช้เลขฐานแปดแทนเลขฐานสองทำให้จำนวนบิทสั้นลง
เลขฐานสิบ คือตัวเลขที่มีค่าไม่ซ้ำกันสิบหลัก (0,1,2,…,9) เป็นเลขฐานที่มนุษย์คุ้นเคยและใช้ในชีวิตประจำวันมากที่สุด ตัวเลขที่มีจำนวนมากกว่า 9 ให้ใช้ 10 ซึ่งเป็นการกลับไปใช้เลข 1 และ 0 อีก เพียงแต่ค่าของ 1 เปลี่ยนไปเป็น 10 เท่าของตัวมันเอง เช่น 333 (สามร้อยสามสิบสาม) แม้จะใช้ตัวเลข 3 ทั้งหมด แต่ตำแหน่งของตัวเลขย่อมมีความหมายตามตำแหน่งของแต่ละหลักนั้น กล่าวคือ หลักหน่วยน้อยกว่าหลักสิบ 10 เท่า หลักสิบน้อยกว่าหลักร้อย 10 เท่า ตามลำดับ
เลขฐานสิบหก เลขฐานสิบหก มีความสัมพันธ์กับเลขฐานสอง คือ เลขฐานสองจำนวน 4 หลัก แทนด้วยเลขฐานสิบหก 1 หลัก ดังนั้นเราจึงสามารถเขียนเลขฐานสอง 8 บิทแทนด้วยเลขฐานสิบหก 2 บิท การใช้เลขฐานสิบหกแทนเลขฐานสองทำให้จำนวนบิทสั้นลง
ระบบเลขฐานสอง (Binary) มีตัวเลข 0 และ 1 เช่น 0000 0001 0010 ตำแหน่งของหลักเรียกว่าบิต (Bit มาจาก Binary Digit) โดยบิตขวามือสุดเป็นบิต 0 ซึ่งเรียกว่า LSB (Least Significant Bit) ส่วนบิตซ้ายมือสุดเรียกว่า MSB (Most Significant Bit) Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 1 0 1 0 1 1 0 0 MSB LSB
ระบบเลขฐานสอง (Binary) ค่าของเลขฐานสองหาได้จากการรวมค่าของจำนวนเลขที่คิดตามตำแหน่งของหลัก คล้ายกับเลขฐานสิบโดยค่าความแตกต่างของหลักมีค่าเพิ่มเป็น 2 เท่าหลักที่ต่ำกว่า ( เลขฐานสิบต่างกัน 10 เท่า) จำนวนของเลขฐานสองหาได้ดังนี้ MSB LSB 0 1 0 0 0 1 1 1 128 64 32 16 8 4 2 1 ค่าที่ได้ = 64 +4+2+1 =71
ระบบเลขฐานสอง (Binary) เลขฐานสองที่มี n บิตจะมีค่า 2 ยกกำลัง n ค่า เช่นเลขฐานสอง ขนาด 2 บิตจะมี 4 ค่า (0 - 3) เลขฐานสองขนาด 4 บิตจะมี 16 ค่า (0 -15) bit1 bit0 ค่า 0 0 0 0 1 1 1 0 2 1 1 3 เลขฐานสองขนาด 2 บิต
ระบบเลขฐานสอง (Binary) ตัวอย่าง หาค่าของเลขฐานสองต่อไปนี้ ก) 0 0 1 0 ข) 1001 ค) 00101010 ง) 10110011 ก) 0010 = 2 ข) 1001 = 8 +1 = 9 ค) 00101010 = 32 +8 + 2 = 42 ง) 10110011 = 128 +32+16+2+1 =179
การแปลงเลขฐานสิบเป็นเลขฐานสอง ใช้วิธีการหารด้วย 2 ไปเรื่อยจนกว่าจะหารไม่ได้ ผลลัพธ์คือเศษของการหารทุกตัว ตัวอย่างหาค่าของเลขฐานสองจากเลขต่อไปนี้ 6 ,11,97 2 ) 11 = 5 เศษ 1 2 ) 5 = 2 เศษ 1 2 ) 2 = 1 เศษ 0 2 ) 1 = 0 เศษ 1 2 ) 6 = 3 เศษ 0 2 ) 3 = 1 เศษ 1 2 ) 1 = 0 เศษ 1 6 = 0110 11 = 1011
การแปลงเลขฐานสิบเป็นเลขฐานสอง 97 = 01100001 หาค่าของเลขฐานสองจากเลขฐานสิบค่า 97 2 ) 97 = 48 เศษ 1 2 ) 48 = 24 เศษ 0 2 ) 24 = 12 เศษ 0 2 ) 12 = 6 เศษ 0 2 ) 6 = 3 เศษ 0 2 ) 3 = 1 เศษ 1 2 ) 1 = 0 เศษ 1 (bit 0)
หน่วยของเลขฐานสอง 1 Byte 4 Bit = 1 Nibble 1 0 1 1 0 0 1 1 1 0 1 1 0 0 1 1 8 Bit = 1 Byte หรือ 1 Character Hi Nibble Low Nibble 2 Byte = 1 Word 10 1 KByte = =1024 Byte 2 20 1 Mbyte = =1024 * 1024 Byte 2 30 1 GByte = =1024 * 1024 * 1024 Byte 2
การบวกเลขฐานสอง จะทำการบวกครั้งละบิตโดยเริ่มจากบิตต่ำซึ่งอยู่ทางขวามือก่อน และจะมีการทดไปบิตสูงเมื่อบวกกันแล้วได้ค่าเกิน 1 1100 + 0010 1001 + 0001 01011001 + 00111101 =12 =9 =2 =1 10010110 1110 1010 =10 =14
การบวกเลขฐานสอง หาผลบวกของเลขฐานสองต่อไปนี้ 11110011 + 00011111 01011111 + 00111101 00000111 100010010 10100011
การลบเลขฐานสอง การลบจะทำการลบครั้งละบิตโดยเริ่มจากบิตต่ำซึ่งอยู่ทางขวามือก่อน และจะมีการยืมจากบิตสูงเมื่อตัวตั้งน้อยกว่า ค่าที่ยืมมาจะมีค่าเป็น 2 0110 - 0001 01011111 - 00111101 1100 - 0111 00100010 0101 0101
การคูณเลขฐานสอง การคูณจะคูณคล้ายกับเลขฐานสิบ 01011111 * 00001110 0110 * 0011 0110 * 0001 01011111 0110 10010 0110 10100110010
การหารเลขฐานสอง ใช้วิธีการตั้งหารดังตัวอย่าง 0 1 0 0 0 1 0 เศษ 1 11 ) 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0 1
ชนิดของเลขฐานสอง (Binary) ระบบเลขฐานสองแบ่งออกได้เป็น 3 ชนิด คือ แบบไม่คิดเครื่องหมาย(Unsigned Binary) รหัส BCD (Binary Code Decimal) แบบคิดเครื่องหมาย (Signed Binary)
Unsigned Binary ค่าที่ได้ = 64 + 4 + 2 +1 = 71 0 1 0 0 0 1 1 1 เป็นเลขที่ไม่คิดเครื่องหมายมีค่าเป็นจำนวนบวกอย่างเดียว โดยค่าของจำนวนเลข คิดตามตำแหน่งของหลักคล้ายกับเลขฐานสิบโดยค่าของจำนวนหาได้ดังนี้ MSB LSB 0 1 0 0 0 1 1 1 128 64 32 16 8 4 2 1 ค่าที่ได้ = 64 + 4 + 2 +1 = 71
Binary Code Decimal (BCD) เป็นการใช้รหัสของเลขฐานสอง 4 บิตแทนเลขฐานสิบ 1 หลัก ดังนั้นหากมีเลขฐานสอง 8 บิตจะแทนเลขฐานสิบได้ 2 หลักดังเช่น 0 1 0 0 0 1 1 1 8 4 2 1 8 4 2 1 4 7
Binary Code Decimal (BCD) ก) 00110100 ข) 01101001 ค) 100100100010 ง) 0100110111 ก) 00110100 = 34 ข) 01101001 = 69 ค) 100100100010 = 922 ง) 0100110111 = 137
Binary Code Decimal (BCD) ก) 35 ข) 14 ค) 162 ง) 248 ก) 35 = 00110101 ข) 14 = 00010100 ค) 162 = 000101100010 ง) 248 = 001001001000
เลขฐานสองแบบคิดเครื่องหมาย(Signed Binary) เป็นการใช้งานเลขฐานสองแบบมีเครื่องหมายรวมอยู่ด้วย โดยกำหนดบิตซ้ายมือสุดคือบิตเครื่องหมาย หากบิตซ้ายมือสุดมีค่าเป็น 1 แสดงว่าเป็นค่าลบ เป็น 0 แสดงว่าเป็นค่าบวก ส่วนบิตที่เหลือเป็นค่าของจำนวน 0 1 0 0 1 0 1 0 มีค่าเป็น บวก บิทเครื่องหมาย มีค่าเป็นลบ 1 0 1 0 1 0 1 0
เลขฐานสองแบบคิดเครื่องหมาย(Signed Binary) ตัวอย่างของเลขฐานสองแบบคิดเครื่องหมายขนาด 3 บิต (0) 000 000 001 010 011 100 101 110 111 1 2 3 -4 -3 -2 -1 001 111 (+1) บวก (- 1) 010 110 (+2) (- 2) ลบ 011 101 (+3) (- 3) 100 (- 4)
เลขฐานสองแบบคิดเครื่องหมาย(Signed Binary) ตัวอย่างของเลขฐานสองแบบคิดเครื่องหมายขนาด 4 บิต 0 0 0 0 = 0 0 0 0 1 = 1 0 0 1 0 = 2 0 0 1 1 = 3 0 1 0 0 = 4 0 1 0 1 = 5 0 1 1 0 = 6 0 1 1 1 = 7 1 0 0 0 = - 8 1 0 0 1 = - 7 1 0 1 0 = - 6 1 0 1 1 = - 5 1 1 0 0 = - 4 1 1 0 1 = - 3 1 1 1 0 = - 2 1 1 1 1 = - 1
เลขฐานสองแบบคิดเครื่องหมาย(Signed Binary) กรณีที่เป็นค่าบวกบิตซ้ายมือสุดเป็น 0 บิตที่เหลือจะคิดเป็นจำนวนได้เช่นเดียวกับเลข ฐานสองแบบไม่คิดเครื่องหมายดังตัวอย่าง ก) 0010 = 2 ข) 0101 = 4+1 = 5 ค) 00101010 = 32 +8 + 2 = 42 ง) 01111111 = 64+32+16+8+4+2+1 =127
เลขฐานสองแบบคิดเครื่องหมาย(Signed Binary) กรณีที่เป็นค่าลบบิตซ้ายมือสุดเป็น 1 การหาเลขฐานสองของจำนวนที่เป็นลบใช้วิธีการนำเลขจำนวนบวก มาทำ 2’s Complement ซี่งมีขั้นตอนดังนี้ ตัวอย่าง หาค่าของเลขฐานสองจำนวนต่อไปนี้ - 3 และ -9 ค่าของ 3 เท่ากับ 0011 1) นำเลขฐานสองมาทำ Complement โดยการเปลี่ยนบิตเป็นตรงข้าม 0011 เปลี่ยนเป็น 1100 2) บวกผลลัพธ์ในข้อ 1 ด้วย 1 จะได้ผลลัพธ์เป็นจำนวน 1100 +1 = 1101 ดังนั้น -3 = 1101
เลขฐานสองแบบคิดเครื่องหมาย(Signed Binary) หาค่าของเลขฐานสองของ -9 ค่าของ 9 เท่ากับ 00001001 1) นำเลขฐานสองมาทำ Complement โดยการเปลี่ยนบิตเป็นตรงข้าม 00001001 เปลี่ยนเป็น 11110110 2) บวกผลลัพธ์ในข้อ 1 ด้วย 1 จะได้ผลลัพธ์เป็นจำนวน 11110110 +1 = 11110111 ดังนั้น - 9 = 11110111
เลขฐานสองแบบคิดเครื่องหมาย(Signed Binary) ตัวอย่าง หาค่าของเลขฐานสองแบบคิดเครื่องหมายจากเลขฐานสิบต่อไปนี้ ก) - 7 ข) -24 ค) -100 ง) - 130 ก) 7 = 0111 ; 1000+1 = 1001 - 7 = 1001 ข) 24 = 00011000 ; 11100111+1 = 11101000 -24 = 11101000 ค) 100 = 01100100 ; 10011011+1 = 10011100 -100 = 10011100 ง) 130 = 010000010 ;101111101 +1 =101111110 -130 = 101111110
เลขฐานสองแบบคิดเครื่องหมาย(Signed Binary) ตัวอย่าง หาค่าของเลขฐานสองแบบคิดเครื่องหมายต่อไปนี้ ก) 0010 ข) 1001 ค) 00101010 ง) 10110011 ก) 0010 = 2 ข) 1001 = -7 ค) 00101010 = 32 +8 + 2 = 42 ง) 10110011 = - 77
เลขฐานสองแบบคิดเครื่องหมาย ตัวอย่าง หาค่าของเลขฐานสิบจากเลขฐานสองแบบคิดเครื่องหมายต่อไปนี้ ก) 11110010 ข) 11111111 ค) 11110000 ง) 10000001 ก) 11110010 = -14 ข) 11111111 = -1 ค) 11110000 = -16 ง) 10000001 = - 127
ระบบเลขฐานสิบหก (Hexa Decimal) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ฐานสอง 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 ฐานสิบหก 1 2 3 4 5 6 7 8 9 A B C D E F ประกอบด้วยตัวเลข 0-9 และตัวอักษร A ,B,C,D,E,F ซึ่งเกิดจากการรวมเลขฐานสองเป็นกลุ่มละ 4 บิต เพื่อให้ง่ายต่อการใช้งานและการจำ ความสัมพันธ์ของเลขฐานสิบหก ฐานสองและฐานสิบเป็นดังนี้
ระบบเลขฐานสิบหก (Hexa Decimal) การเขียนค่าของตัวเลข ฐานสิบหกจะใช้ ตัวอักษร H กำกับต่อจากค่าเพื่อแสดงว่าเป็นเลขฐานสิบหก ส่วนเลขฐานสองจะใช้ B กำกับ เลขฐานสิบไม่มีตัวอักษรกำกับดังเช่น 1010B เป็นเลขฐานสอง 1010H เป็นเลขฐานสิบหก 1010 เป็นเลขฐานสิบ
การแปลงเลขฐาน 8,16 เป็นเลขฐาน 2 ถ้าเป็นเลขฐาน 8 ให้แทนเลขแต่ละตัวด้วยฐาน 2 จำนวน 3 bit เช่น 23.28 010 011 010 =10011.012 ถ้าเป็นเลขฐาน 16 ให้แทนเลขแต่ละตัวด้วยฐาน 2 จำนวน 4 bit เช่น 13.416 0001 0011 0100 = 10011.012 สำหรับการแปลงจากฐาน 8 เป็น ฐาน 16 หรือจากฐาน 16 ให้เป็นฐาน 8 ให้ทำการแปลงเป็นฐาน 2 ก่อน แล้วจึงแปลงจากฐาน 2 เป็นฐานที่ต้องการ เช่น 25.28 = 010 101. 010 = 01 0101.0100 = 15.4 16
การแปลงเลขฐานสิบหกเป็นฐานสิบ ค่าของเลขฐานสิบหกจะมีค่าตามตำแหน่งของหลักโดยค่าจะเป็น 16 เท่าของหลักต่ำ ดังนี้ 1 2 4 256 16 1 ค่าของเลขฐานสิบหกหาได้จากการนำค่าในตำแหน่งคูณกับค่าประจำหลัก ดังนั้นค่าของ 124H = 1 x 256 +2 x 16 + 4 = 296
การแปลงเลขฐานสิบหกเป็นฐานสิบ ตัวอย่าง หาค่าของเลขฐานสิบจากเลขฐานสิบหกต่อไปนี้ ก) 11H ข) 1CH ค) A2H ก) 11H = 1*16 + 1*1 = 17 ข) 1CH = 1*16 + 12*1 = 28 ค) A2H = 10*16 + 2*1 = 162
การแปลงเลขฐานสองเป็นฐานสิบหก ตัวอย่าง หาค่าของเลขฐานสิบหกจากเลขฐานสองต่อไปนี้ ก) 01101011B ข) 11111110B ค) 10101010B ก) 01101011B = 6BH ข) 11111110B = FEH ค) 10101010B = AAH
การแปลงเลขฐานสิบเป็นฐานสิบหก ใช้วิธีการหารด้วย 16 ไปเรื่อยจนกว่าจะหารไม่ได้ ตัวอย่างหาค่าของเลขฐานสิบหกจากเลขฐานสิบต่อไปนี้ 22 ,48,138 16 ) 22 1 เศษ 6 16 ) 48 3 เศษ 0 16 ) 138 8 เศษ 10 22 = 16H 48 = 30H 138 = 8AH
การบวกเลขฐานสิบหก 12H + 19H 48H + 19H 1FH + 1BH 61H 3AH 2BH ทำการบวกเริ่มต้นจากหลักขวามือก่อนและจะทำการทดไปยังหลักสูงเมื่อมีค่าเกิน 15 ตัวอย่าง หาค่าผลบวกของเลขฐานสิบหกต่อไปนี้ 12H + 19H 48H + 19H 1FH + 1BH 61H 3AH 2BH
การลบเลขฐานสิบหก 1FH - 19H 42H - 15H FAH - 1BH 06H 2DH DFH ทำการลบจากหลักขวามือก่อนและจะทำการยืมเมื่อตัวตั้งน้อยกว่าตัวลบ การยืมจะยืมจากหลักสูงมา 1 ซึ่งจะกลายเป็น 16 ในหลักที่กำลังลบกัน ตัวอย่าง หาค่าของการลบเลขฐานสิบหกต่อไปนี้ 1FH - 19H 42H - 15H FAH - 1BH 06H 2DH DFH
เลขฐานสิบหก คำถาม หาค่าของเลขฐานสิบจากเลขฐานสิบหกต่อไปนี้ 1) A0H คำถาม หาค่าของเลขฐานสิบจากเลขฐานสิบหกต่อไปนี้ 1) A0H 2) 18H 3) 7FH 4) FFH 5) FFFFH 6) 03FFH 7) 1000H