490 likes | 685 Views
บทที่ 3 ระบบเลข และการแทนรหัสข้อมูล. ระบบเลขฐานต่างๆ (เน้น ฐาน 2 ฐาน 8 และ ฐาน 16) การแปลงเลขฐาน ความสัมพันธ์ของเลขฐาน 2 ฐาน 8 และฐาน 16 การคำนวณทางคณิตศาสตร์ในระบบเลขฐาน การแทนรหัสข้อมูลในระบบ BCD, EBCDIC, ASCII การแทนรหัสข้อมูลของจำนวนเลข จำนวนเต็ม จำนวนจริง. ระบบเลขฐาน (ฐาน 2,8,10,16).
E N D
บทที่ 3 ระบบเลข และการแทนรหัสข้อมูล • ระบบเลขฐานต่างๆ (เน้น ฐาน 2 ฐาน 8 และ ฐาน 16) • การแปลงเลขฐาน • ความสัมพันธ์ของเลขฐาน 2 ฐาน 8 และฐาน 16 • การคำนวณทางคณิตศาสตร์ในระบบเลขฐาน • การแทนรหัสข้อมูลในระบบ BCD, EBCDIC, ASCII • การแทนรหัสข้อมูลของจำนวนเลข จำนวนเต็ม จำนวนจริง
ระบบเลขฐาน (ฐาน 2,8,10,16) • Place Value: ระบบเลขที่แต่ละหลักมีค่าประจำหลัก • ค่าประจำหลัก คือ ค่าของเลขฐานนั้นๆ ยกกำลังตามตำแหน่งหลักเริ่ม จาก ศูนย์ • Least significant digit : คือเลขที่มีค่าประจำหลักน้อย • Most significant digit : คือเลขที่มีค่าประจำหลักสูง • การเขียนเลขฐานต้องมีค่าฐานกำกับ ยกเว้นฐาน 10
ตัวเลขในฐานต่างๆ • ฐาน 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
การแปลงเลขฐาน • การแปลงเลขฐานใดๆ เป็น ฐาน 10 • การแปลงเลขฐาน 10 เป็น ฐานใดๆ • การแปลงเลขฐาน 2 เป็น ฐาน 8 ฐาน 16 • การแปลงเลขฐาน 8 ฐาน 16 เป็น ฐาน 2
อาศัยค่าประจำหลัก คูณตัวเลขแต่ละหลัก นำผลคูณที่ได้มารวมกัน ต.ย. 11012 = ( )10 ค่าประจำหลัก คือ 23 22 21 20 (1*8)+(1*4)+(0*2)+(1*1) = 13 การแปลงเลขฐานใดๆเป็นฐาน 10
การแปลงเลขฐาน 10 เป็นฐานใดๆ • กรณี เลขจำนวนเต็ม • ใช้หลัก MODULO คือ • เลขฐาน 10 เป็นตัวตั้ง หารด้วยเลขฐานที่กำลังจะแปลง • ให้เก็บเศษจากการหาร • หารเลขต่อไปจนกระทั้งไม่สามารถหารได้ • นำเศษของการหารมาวางต่อกัน เศษตัวสุดท้ายเป็น Most significant
ตัวอย่างการแปลงเลขฐาน 10 เป็นฐานใดๆ • เลขจำนวนเต็ม 1310 = ( )2 1310= ( ) 4 4 13 3 1 2 13 2 6 1 2 3 0 1 1 ตอบ 11012 ตอบ 314
การแปลงเลขฐาน 10 เป็นฐานใดๆ • กรณี เลขจำนวนจริง: การแปลงแบ่งเป็น 2 ส่วน • ส่วนหน้าจุดทศนิยมใช้วิธี MODULO • ส่วนเลขหลังจุดทศนิยม • คูณเลขหลังจุดด้วยฐานที่จะไป บันทึกเฉพาะเลขหน้าจุด • ส่วนเลขหลังจุดนำมาคูณต่อ จนครบจำนวนตำแหน่งหลังจุดที่ต้องการ
ตัวอย่างการแปลงเลขฐาน 10 เป็นฐานใดๆ • เลขจำนวนจริง 13.4 10 = ( )2 .4 * 2 = 0 .8 .8 * 2 = 1 .6 .6 * 2 = 1 .2 .2 * 2 = 0 .4 2 13 2 6 1 2 3 0 1 1 Ans: 1101.01102
การแปลงเลขฐาน 2 เป็น ฐาน 8 ฐาน 16 • หลักการใช้การจัดกลุ่มบิท • เลขฐาน 2 เป็น ฐาน 8 จัดกลุ่มละ 3 บิท • เลขฐาน 2 เป็น ฐาน 16 จัดกลุ่มละ 4 บิท • โดยเริ่มจากบิทที่อยู่ใกล้จุดทศนิยม หากกลุ่มสุดท้ายไม่ครบเติม 0
ตัวอย่างการแปลงเลขฐาน 2 เป็นฐาน 8 • จำนวนเต็ม 111112 = ( 37 ) 8 0 1 1 1 1 1 (0*4)+(1*2)+(1*1) (1*4)+(1*2)+(1*1) 3 7
ตัวอย่างการแปลงเลขฐาน 2 เป็นฐาน 16 • เลขจำนวนจริง 0001.112 = (1.C ) 16 1 1 0 0 0 0 0 0 0 1 (0*8)+(0*4)+(0*2)+(1*1) (1*8)+(1*4)+(0*2)+(0*1) 12 C 1
การแปลงเลขฐาน 8 ฐาน 16 เป็น ฐาน 2 • ใช้หลักการกระจายเลขแต่ละหลักออกเป็น บิท • เลขฐาน 8 หนึ่งหลัก กระจายเป็นเลขฐาน 2 ได้ 3 บิท • เลขฐาน 16 หนึ่งหลัก กระจายเป็นเลขฐาน 2 ได้ 4 บิท
ตัวอย่างการแปลงเลขฐาน 8 ฐาน 16 เป็น ฐาน 2 • กรณี เลขจำนวนเต็ม 738 =( ) 2 A316 = ( ) 2 7 3 10 3 0 0 1 1 1 1 1 0 1 1 1 0 1 0 Ans: 1010000116 Ans: 1110112
ตัวอย่างการแปลงเลขฐาน 8 ฐาน 16 เป็น ฐาน 2 • กรณี เลขจำนวนจริง 7.38 =( ) 2 A3.B16 = ( ) 2 7 . 3 10 3 . 11 1 1 1 0 1 1 1 0 1 0 0 0 1 1 1 0 1 1 Ans: 10100001.101116 Ans: 111 . 0112
การคำนวณเลขฐาน • การบวกเลขฐาน • การลบเลขฐาน • การลบเลขฐาน แบบ Complement
การบวกเลขฐาน • การบวก F31C16 + 235016 1266C16 1101.112 + 0111.012 10101.00 2 5345 + 1235 คำนวณไม่ได้ เพราะไม่มีเลข 5 ในฐาน 5
การลบเลขฐาน • การลบเลข 1011.0112 - 0111.1012 0011.1102 4325 - 1435 2345
การหาคอมพลีเมนท์ (Complement) • Complement ของฐานใดๆ (ให้ R แทนฐาน) มี 2 ประเภท คือ Complement R และ Complement R-1 ฐาน R-1’ Comp. R’ Comp 2 1’ Comp 2’ Comp. 8 7’ Comp 8’ Comp 10 9’ Comp 10’ Comp
การหาค่าคอมพลีเมนท์ • การหาคอมพลีเมนท์ ที่ R-1 ของเลขใดๆ • นำค่าสูงสุดของเลขนั้นๆลบด้วยเลขนั้น • ผลที่ได้คือ คอมพลีเมนท์ของเลขจำนวนนั้น • เลข 2910 มีค่าสูงสุด คือ 99 • 9’ Comp : 99 -29 = 70 • เลข 101.112 มีค่าสูงสุดคือ 111.11 • 1 ‘Comp : 111.11 - 101.11 = 010.00
การหาค่าคอมพลีเมนท์ • การหาคอมพลีเมนท์ ที่ R ของเลขใดๆ • นำค่าสูงสุดของเลขนั้นบวกด้วยเลขที่ทำให้เกิดการ เปลี่ยนหลัก ของค่าสูงสุด แล้วจึงลบด้วย เลขจำนวนนั้นอีกที่หนึ่ง • เลข 2910 มี คอมพลีเมนท์ เป็น • 10 ‘ Comp : (99 + 1) - 29 = 71 • เลข 101.112 มีคอมพลีเมนทเป็น • 2 ‘Comp: (111.11 + .01)- 101.11 = 0010.01
ข้อสังเกตุเกี่ยวกับคอมพลีเมนท์ข้อสังเกตุเกี่ยวกับคอมพลีเมนท์ • การหา R-1 Complement คือ การนำเลขจำนวนนั้นลบออกจากเลขสูงสุด • 1’ Complement ในเลขฐาน 2 คือ การเปลี่ยนค่าของแต่ละบิทให้ตรงกันข้าม • ค่า R-1 Complement มีค่าน้อยกว่า R Complement อยู่ 1 เสมอ ณ หลักขวามือสุด • 2’Comp = 1’ Comp + 1 ที่หลักขวามือสุด
การลบเลขแบบคอมพลีเมนท์การลบเลขแบบคอมพลีเมนท์ • นำเลขตัวลบไปหาคอมพลีเมนท์ • นำคอมพลีเมนท์ที่หาได้ บวก กับเลขตัวตั้ง • ผลลัพธ์ที่ได้ถ้ามีเลขเกินหลัก • กรณี R’ Comp. ให้ตัดทิ้ง • กรณี R-1’ Comp. ให้นำเลขที่เกินหลัก บวกกับผลลัพธ์ • ผลที่ได้คือคำตอบ
ตัวอย่างการลบเลขแบบคอมพลีเมนท์ตัวอย่างการลบเลขแบบคอมพลีเมนท์ • R-1’ Comp. 1011.011 2- 111.1012 = ? 1) 111.111 - 111.101= 000.010 2) 1011.011 + 1000.010 1 0011.101 + 1 0011.110 4325 - 1435 = ? 1) 444 - 143 = 301 2) 432 + 301 1 233 + 1 234 1 0 1
ตัวอย่างการลบเลขแบบคอมพลีเมนท์ตัวอย่างการลบเลขแบบคอมพลีเมนท์ • คอมพลีเมนท์ ที่ R 1011.011 2- 111.1012 = ? 1) 10000.000 - 0111.101=1000.011 2) 1011.011 + 1000.011 1 0011.110 4325 - 1435 = ? 1) 1000 - 143 = 302 2) 432 + 302 1 234 ตัดทิ้ง
ตัวอย่างการลบเลขแบบคอมพลีเมนท์ ***กรณีที่ตัวตั้งมีคานอยกวาตัวลบ • ผลลัพธที่ไดเปนคาติดลบมีวิธีลบ มีขั้นตอนดังนี้ • นําตัวตั้งบวกดวยคอมพลีเมนตของตัวลบ • หากผลบวกมีจํานวนหลักเทาเดิมแสดงวาผลการบวกจะยังไมเปนผลลัพธของการลบที่ตองการ • นําผลบวกที่ไดไปหาคาคอมพลีเมนต แลวเติมเครื่องหมายลบจะไดเปนผลลัพธของการลบ
1111-1100= 0011 1 2 ข้อแตกต่างจาก R comp. 1011+ 0011 1110 - 1111-1110 = 0001 3 ตัวอย่างการลบเลขแบบคอมพลีเมนท์ ***กรณีที่ตัวตั้งมีคานอยกวาตัวลบ ตัวอย่าง 10112-11002= ? ลองลบด้วยวิธี R-1 complement
ตัวอย่างการลบเลขแบบคอมพลีเมนท์ ***กรณีที่ตัวตั้งมีคานอยกวาตัวลบ • ผลลัพธที่ไดเปนคาติดลบมีวิธีลบ มีขั้นตอนดังนี้ • นําตัวตั้งบวกดวยคอมพลีเมนตของตัวลบ • หากผลบวกมีจํานวนหลักเทาเดิมแสดงวาผลการบวกจะยังไมเปนผลลัพธของการลบที่ตองการ • นําผลบวกที่ไดไปหาคาคอมพลีเมนต แลวเติมเครื่องหมายลบจะไดเปนผลลัพธของการลบ
10000-1100= 0100 1 ดูจาก 2 1011+ 0100 1111 - 10000-1111 = 0001 3 ตัวอย่างการลบเลขแบบคอมพลีเมนท์ ***กรณีที่ตัวตั้งมีคานอยกวาตัวลบ ตัวอย่าง 10112-11002= ? คำถาม : ใช้วิธีลบแบบใดอยู่ R-1 หรือ R complement?
การแทนรหัสข้อมูลในหน่วยความจำData Representation • การแทนรหัสข้อมูลที่เป็นอักขระ (Alphanumeric Data Representation) • การแทนรหัสข้อมูลที่เป็นจำนวนเลข (Numeric Data Representation) • เลขจำนวนเต็ม (Integer Representation) • เลขที่มีจุดทศนิยม (Floating Point Representation)
การแทนข้อมูลที่เป็นอักขระการแทนข้อมูลที่เป็นอักขระ • รหัส BCD : Binary Coded Decimal Code • รหัส EBCDIC: Extended Binary Coded Decimal Interchange Code • รหัส ASCII : American Standard Code for Information Interchange
รหัส BCD • ใช้ 6 บิทแทนอักขระ 1 ตัว • ระบบนี้แทนอักขระได้ 64 ตัว ( 26 รูปแบบ) C B A 8 4 2 1 Digit bit Zone bit Check bit/ Parity bit
รหัส BCD • การแทนรหัส BCD • อักขระแบบตัวเลข (0 - 9) Zone Bit จะเป็น 00 • อักขระแบบตัวอักษร หรือ สัญลักษณ์พิเศษ Zone bit เป็น 11
รหัส EBCDIC • ใช้ 8 บิทแทนอักขระ 1 ตัว • ระบบนี้แทนอักขระได้ 256 ตัว ( 28 รูปแบบ) C B A 8 4 2 1 Digit bit Zone bit Check bit/ Parity bit
รหัส EBCDIC • การบันทึกข้อมูลในระบบ EBCDIC มี 2 แบบ • การบันทึกแบบ Zone Decimal • การบันทึกแบบ Packed Decimal • การบันทึกแบบตัวเลข Zone bit มีค่าเป็น • 1111 สำหรับเลขที่ไม่มีเครื่องหมายนำหน้า ( 15 ,F) 1100 สำหรับเลขที่มีเครื่องหมายบวก และ (+,12 ,C) 1101 สำหรับเลขที่มีเครื่องหมายลบ (-,13 ,D)
การแทนข้อมูลแบบ Packed Decimal • เป็นการเปลี่ยนลักษณะการเก็บรหัส EBCDIC ให้ใช้ในการคำนวณ • การเปลี่ยนนี้จำนวนหลักสามารถยืดหยุ่นได้ • ไม่ใช้กับตัวเลขที่เป็นจุดทศนิยม
วิธีการ PACK • “-123” • สลับส่วน Zone bit และ Digit bit ของไบท์ขวาสุด • ตัด Zone bit ของไบท์ ที่เหลือ • บีบข้อมูลซึ่งเป็น Digit Bit เข้ามา • มักทำอยู่ในเลขฐาน 16 (123D)16 • วิธี Unpack ทำตรงกันข้าง กับการ Pack 1101 0001 1101 0010 1101 0011
รหัส ASCII • มี 2 ชนิด คือ 7 บิท กับ 8 บิท กำหนดให้ตัวเลขมีค่าน้อยกว่าตัวอักษรเป็นรหัสที่นิยมในปัจจุบัน • ลักษณะคล้าย EBCDIC มี Zone bit เป็น • สำหรับตัวเลข 0101 และ 011 • สำหรับตัวอักษร 1010 และ 100
เป็นบิทที่ใช้ตรวจสอบการแทนรหัส มี 2 ระบบ Even Parity ระบบจำนวนคู่ ระบบนี้ต้องมีบิทที่เป็นเลข 1 ทั้งหมดมีจำนวนเป็นเลขคู่ Odd Parity ระบบจำนวนคี่ ระบบนี้ต้องมีบิทที่เป็นเลข 1 ทั้งหมดมีจำนวนเป็นเลขคี่ Parity bit หรือ Check bit 1 1 1 0 0 0 1 0 1 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 0 1 0 1
การแทนรหัสข้อมูลที่เป็นตัวเลขการแทนรหัสข้อมูลที่เป็นตัวเลข • การแทนข้อมูลแบบนี้ กำหนดเนื้อที่ในหน่วยความจำมีขนาดตายตัว (Fixed length word) สำหรับแทนตัวเลข 1 จำนวน • half-word ใช้เนื้อที่ 2 ไบท์ • Full-word ใช้เนื้อที่ 4 ไบท์ • Double-word ใช้เนื้อที่ 8 ไบท์
การแทนเลขจำนวนเต็ม • Sign Magnitude / Pure binary code • 2’ Complement • 1’ Complement
Sign Magnitude • ระบบนี้บิทซ้ายสุดแทนเครื่องหมายเรียกว่า Sign bit ที่เหลือแทนขนาดของจำนวนเลข เรียกว่า Magnitude MSB LSB Sign bit Magnitude 1 แทน ลบ 0 แทน บวก 1 Word = 4 Byte = 32 Bit
แสดงการแทนค่า • แบบ Sign Magnitude 1 Word = 4 Byte = 32 bit 31 32 2 1 0 ......................... 0 1 1 0 0 1 25=110012 0 0 0 -25 1 0 0 ......................... 0 1 1 0 0 1
แสดงการแทนค่า • แบบ 2’ Complement • เป็นระบบที่นิยมใช้ • การแสดงจำนวนเลขในระบบนี้ • เลขบวก แทนเหมือนระบบ Sign Magnitude • เลขลบ แทนด้วยค่า 2’ Complement ของเลขจำนวนนั้น
ตัวอย่าง การแทนค่า 2’ Complement • เช่น 28 = 111002 MSB LSB 0 000000.............0000000000 1 1 1 0 0 1 111111.............1111111111 0 0 0 1 1 + 1 1 111111.............1111111111 0 0 1 0 0
Floating Point Representation • R = + - M * B+- E 31 30 24 0 Sign Exponent Mantissa SSign แทนเครื่องหมาย บวก ลบ ของจำนวนเลข E Exponent ส่วนที่ยกกำลัง M Mantissa เลขที่อยู่หลังจุด
ขั้นตอนการทำ Floating point • เปลี่ยนเลขไปเป็นฐาน 16 • Normalization เลขฐาน 16 (มีเลขหลังจุด และ ยกกำลัง) • เปลี่ยน Sign, Exponent, Mantissa เป็นเลขฐาน 2 • Sign : 1 แทนค่าลบ 0 แทนค่าบวก • Mantissa : เปลี่ยนเป็นฐาน 2 เติมเลขจากขวา มา ซ้ายที่เหลือเติมศูนย์
ขั้นตอนการทำ Floating point • Exponent เป็นได้ทั้งค่าบวก หรือ ลบ จึงต้องใช้วิธี Excess 64 • exponent 16 = 4016 + true exponent16 • exponent16 ----> exponent 2
ตัวอย่าง ทำ Floating point • 28 ----> 1C16 • 1C16 = (+.1C * 102)16 • Sign ----> 0 • Mantissa ----> 0001 11002 • Exponent ----> 4016 + 216 = 42 16 -----> 100 00102 0 100 0010 0001 11000000..........................