ระบบคอมพิวเตอร์และการประมวลผล 4/5/2017 ระบบคอมพิวเตอร์และการประมวลผล องค์ประกอบของระบบคอมพิวเตอร์ ฮาร์ดแวร์ (Hardware) ซอฟต์แวร์ (Software) บุคลากรคอมพิวเตอร์ (Peopleware) การประมวลผลข้อมูล (Data processing) ข้อมูล (Data) และ ข้อสนเทศ (Information) การจัดองค์กรของข้อมูล (Data organization) วัฏจักรการประมวลผลข้อมูล ประเภทของการประมวลผล การแทนข้อมูลในหน่วยความจำ ระบบเลขฐานและการดำเนินการที่เกี่ยวข้อง การแทนอักขระ การแทนจำนวนเลข
ระบบเลขฐานและการดำเนินการที่เกี่ยวข้อง 4/5/2017 ระบบเลขฐานและการดำเนินการที่เกี่ยวข้อง ระบบเลขฐานต่างๆ (เน้น ฐาน 2 ฐาน 8 และ ฐาน 16) การแปลงเลขฐาน ความสัมพันธ์ของเลขฐาน 2 ฐาน 8 และฐาน 16
4/5/2017 ระบบเลขฐาน (ฐาน 2,8,10,16) Place Value ระบบเลขที่แต่ละหลักมีค่าประจำหลัก ค่าประจำหลัก คือ ค่าของเลขฐานนั้นๆ ยกกำลังตามตำแหน่งหลัก หลักขวาสุดมีค่ากำลังเริ่มจาก ศูนย์ Least significant digit : คือเลขในหลักขวาสุดและมีค่าประจำหลักน้อยที่สุด Most significant digit คือเลขในหลักสุดท้ายซึ่งอยู่ซ้ายสุดและมีค่าประจำหลักสูงสุด การเขียนเลขฐานต้องมีค่าฐานกำกับ ยกเว้นฐาน 10
ตัวเลขในฐานต่างๆ ฐาน 2 มีเลข 0,1 4/5/2017 ตัวเลขในฐานต่างๆ ฐาน 2 มีเลข 0,1 เช่น 1012 มีค่าเป็น 1x22 + 0x21 + 1x20 ฐาน 8 มีเลข 0,1,2,3,4,5,6,7 เช่น 1018 มีค่าเป็น 1x82 + 0x81 + 1x80 ฐาน 10 มีเลข 0,1,2,3,4,5,6,7,8,9 เช่น 101 มีค่าเป็น 1x102 + 0x101 + 1x100 ฐาน 16 มีเลข 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F เช่น 10116 มีค่าเป็น 1x162 + 0x161 + 1x160 AF16 มีค่าเป็น 10x161 + 15x160
การแปลงเลขฐาน การแปลงเลขฐานใดๆ เป็น ฐาน 10 4/5/2017 การแปลงเลขฐาน การแปลงเลขฐานใดๆ เป็น ฐาน 10 การแปลงเลขฐาน 10 เป็น ฐานใดๆ การแปลงเลขฐาน 2 เป็น ฐาน 8 ฐาน 16 การแปลงเลขฐาน 8 ฐาน 16 เป็น ฐาน 2
การแปลงเลขฐานใดๆเป็นฐาน 10 4/5/2017 การแปลงเลขฐานใดๆเป็นฐาน 10 อาศัยค่าประจำหลัก คูณตัวเลขแต่ละหลัก นำผลคูณที่ได้มารวมกัน ต.ย. 11012 = ( )10 ค่าประจำหลัก คือ 23 22 21 20 (1x8)+(1x4)+(0x2)+(1x1) = 13
การแปลงเลขฐาน 10 เป็นฐานใดๆ 4/5/2017 การแปลงเลขฐาน 10 เป็นฐานใดๆ กรณี เลขจำนวนเต็ม ใช้หลัก MODULO คือ เลขฐาน 10 เป็นตัวตั้ง หารด้วยเลขฐานที่ต้องการแปลง เก็บเศษจากการหาร นำผลหารเป็นตัวตั้งของการหารเลขต่อไปจนกระทั้งผลลัพธ์ของการหารเป็น 0 นำเศษของการหารมาวางต่อกัน เศษตัวสุดท้ายเป็น Most significant digit
ตัวอย่างการแปลงเลขฐาน 10 เป็นฐานใดๆ เลขจำนวนเต็ม 1310 = ( )2 1310 = ( ) 4 4 13 4 3 1 4 0 3 ตอบ 314 13 2 2 6 1 2 3 0 1 1 ตอบ 11012
การแปลงเลขฐาน 10 เป็นฐานใดๆ 4/5/2017 การแปลงเลขฐาน 10 เป็นฐานใดๆ กรณี เลขจำนวนจริง: การแปลงแบ่งเป็น 2 ส่วน ส่วนหน้าจุดทศนิยมใช้วิธี MODULO ส่วนเลขหลังจุดทศนิยม คูณเลขหลังจุดด้วยฐานที่ต้องการเปลี่ยน บันทึกเฉพาะเลขหน้าจุด ส่วนเลขหลังจุดนำมาคูณต่อ จนครบจำนวนตำแหน่งหลังจุดที่ต้องการ
ตัวอย่างการแปลงเลขฐาน 10 เป็นฐานใดๆ เลขจำนวนจริง 13.4 10 = ( )2 13 2 2 6 1 2 3 0 1 1 .4 x 2 = 0 .8 .8 x 2 = 1 .6 .6 x 2 = 1 .2 .2 x 2 = 0 .4 1101.01102
ความสัมพันธ์ระหว่างเลขฐาน 2 ฐาน 8 และฐาน 16
การแปลงเลขฐาน 2 เป็น ฐาน 8 ฐาน 16 4/5/2017 การแปลงเลขฐาน 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 1 (0*8)+(0*4)+(0*2)+(1*1) (1*8)+(1*4)+(0*2)+(0*1) 1 12 C
การแปลงเลขฐาน 8 ฐาน 16 เป็น ฐาน 2 4/5/2017 การแปลงเลขฐาน 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 1010 00012 111 0112
ตัวอย่างการแปลงเลขฐาน 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 111 . 0112 10100001.10112
การลบเลขฐาน แบบ Complement 4/5/2017 การคำนวณเลขฐาน การบวกเลขฐาน การลบเลขฐาน การลบเลขฐาน แบบ Complement
การบวกเลขฐาน การบวก เลขฐานสอง 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 ทดไปยังหลักถัดไป 1 F31C16 + 235016 1166C16 1101.112 + 0111.012 10101.00 2 คำนวณไม่ได้เพราะไม่มีเลข 5 ในฐาน 5 5345 + 1235
การลบเลขฐาน การลบเลข 1011.0112 - 0111.1012 0011.1102 4325 - 1435 2345
การหาคอมพลีเมนต์ (Complement) คอมพลีเมนต์ของเลขจำนวนหนึ่ง หมายถึง จำนวนเลขที่คู่กับเลขนั้น เมื่อนำเลขทั้งสองจำนวน รวมกันจะได้เป็นจำนวนเต็มพอดี คอมพลีเมนต์ของเลขฐานใดๆ (ให้ R แทนฐาน) มี 2 ประเภท คือ คอมพลีเมนต์ที่ R และ คอมพลีเมนต์ที่ R-1 ฐาน R-1’s Comp R’s Comp 2 1’s Comp 2’s Comp 8 7’s Comp 8’s Comp 10 9’s Comp 10’s Comp
การหาค่าคอมพลีเมนต์ การหาคอมพลีเมนท์ ที่ R-1 ของเลขใดๆ 4/5/2017 การหาค่าคอมพลีเมนต์ การหาคอมพลีเมนท์ ที่ R-1 ของเลขใดๆ นำค่าสูงสุดของเลขนั้นๆลบด้วยเลขนั้น ผลที่ได้คือ คอมพลีเมนท์ของเลขจำนวนนั้น เลข 2910 มีค่าสูงสุด คือ 99 9 ’ Comp : 99 -29 = 70 เลข 101.112 มีค่าสูงสุดคือ 111.112 1 ’ Comp : 111.112 - 101.112 = 010.002
การหาค่าคอมพลีเมนท์ การหาคอมพลีเมนท์ ที่ R ของเลขใดๆ 4/5/2017 การหาค่าคอมพลีเมนท์ การหาคอมพลีเมนท์ ที่ R ของเลขใดๆ คอมพลีเมนต์ R = คอมพลีเมนต์ R - 1 + 1 นำค่าสูงสุดของเลขนั้นบวกด้วยเลขที่ทำให้เกิดการ เพิ่มหลักของค่าสูงสุด แล้วจึงลบด้วย เลขจำนวนนั้นอีกที่หนึ่ง เลข 2910 มี คอมพลีเมนท์ เป็น 10 ‘ Comp : (99 + 1) - 29 = 71 เลข 101.112 มีคอมพลีเมนทเป็น 2 ‘Comp:(111.112 + .012) - 101.112 = 0010.012
ข้อสังเกตุเกี่ยวกับคอมพลีเมนต์์ 4/5/2017 ข้อสังเกตุเกี่ยวกับคอมพลีเมนต์์ การหา R-1 Complement คือ การนำเลขจำนวนนั้นลบออกจากเลขสูงสุด 1’ Complement ในเลขฐาน 2 คือ การเปลี่ยนค่าของแต่ละบิทให้ตรงกันข้าม ค่า R-1 Complement มีค่าน้อยกว่า R Complement อยู่ 1 เสมอ ณ หลักขวามือสุด 2’Comp = 1’ Comp + 1 ที่หลักขวามือสุด
การลบเลขแบบคอมพลีเมนต์์ 4/5/2017 การลบเลขแบบคอมพลีเมนต์์ นำเลขตัวลบไปหาค่าคอมพลีเมนต์ นำคอมพลีเมนต์ที่หาได้ บวก กับเลขตัวตั้ง ผลลัพธ์ที่ได้ถ้ามีเลขเกินหลัก กรณี R’s Complement ให้ตัดทิ้ง กรณี R-1’s Complement ให้นำเลขที่เกินหลัก บวกกับผลลัพธ์ ผลที่ได้คือคำตอบ
ตัวอย่างการลบเลขแบบคอมพลีเมนต์ R-1’s Complement 1011.011 2- 111.1012 = ? 111.111 -111.101= 000.010 1011.011 + 1000.010 1 0011.101 + 1 0011.110 4325 - 1435 = ? 1) 444 - 143 = 301 2) 432 + 301 1 233 + 1 234 1 1 1
ตัวอย่างการลบเลขแบบคอมพลีเมนต์ คอมพลีเมนท์ ที่ R 4325 - 1435 = ? 1) 1000 - 143 = 302 2) 432 + 302 1 234 1011.011 2- 111.1012 = ? 10000.000-0111.101=1000.011 1011.011 + 1000.011 1 0011.110
ตัวอย่างการลบเลขแบบคอมพลีเมนต์ กรณีที่ตัวตั้งมีค่าน้อยกว่าตัวลบ ผลลัพธ์ที่ได้เป็นค่าติดลบ มีวิธีลบดังนี้ นำตัวตั้งบวกด้วยคอมพลีเมนต์ของตัวลบ หากผลบวกมีจำนวนหลักเท่าเดิมแสดงว่าผลการบวกจะยังไม่เป็นผลลัพธ์ของการลบที่ต้องการ นำผลบวกที่ได้ ไปหาค่าคอมพลีเมนต์ แล้วเติมเครื่องหมาย ลบ จะได้เป็นผลลัพธ์ของการลบ 10112- 11002 = ? 10000 - 1100 = 0100 1011 + 0100 1111 - 0001
การแทนข้อมูลในหน่วยความจำ Data Representation 4/5/2017 การแทนข้อมูลในหน่วยความจำ Data Representation การแทนข้อมูลที่เป็นอักขระ (Representation of Characters) การแทนข้อมูลที่เป็นจำนวนเลข (Numeric Data Representation) เลขจำนวนเต็ม (Integer Representation) เลขที่มีจุดทศนิยม (Floating Point Representation)
การแทนข้อมูลที่เป็นอักขระ 4/5/2017 การแทนข้อมูลที่เป็นอักขระ รหัส 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 4/5/2017 รหัส BCD การแทนรหัส BCD อักขระแบบตัวเลข (0 - 9) Zone Bit จะเป็น 00 อักขระแบบตัวอักษร หรือ สัญลักษณ์พิเศษ Zone bit เป็นค่าอื่นๆ
ตัวอย่างรหัส BCD
ระบบนี้แทนอักขระได้ 256 ตัว ( 28 รูปแบบ) รหัส EBCDIC ใช้ 8 บิตแทนอักขระ 1 ตัว ระบบนี้แทนอักขระได้ 256 ตัว ( 28 รูปแบบ) P 8 4 2 1 8 4 2 1 Zone bits Digit bits Parity bit
รหัส EBCDIC การบันทึกข้อมูลในระบบ EBCDIC มี 2 แบบ 4/5/2017 รหัส EBCDIC การบันทึกข้อมูลในระบบ EBCDIC มี 2 แบบ การบันทึกแบบ Zone Decimal การบันทึกแบบ Packed Decimal การบันทึกตัวเลขที่ไม่ระบุเครื่องหมาย Zone bits มีค่าเป็น 1111 หรือ F เช่น 9 แทนโดย 1111 1001 การบันทึกเลขที่มีเครื่องหมาย Zone bits มีค่าเป็น 1100 หรือ C สำหรับเลขที่มีเครื่องหมายบวก และ 1101 หรือ D สำหรับเลขที่มีเครื่องหมายลบ
การแทนข้อมูลแบบ Packed Decimal 4/5/2017 การแทนข้อมูลแบบ Packed Decimal เป็นการเปลี่ยนลักษณะการเก็บรหัส EBCDIC ให้ใช้ในการคำนวณ การเปลี่ยนนี้จำนวนหลักสามารถยืดหยุ่นได้ ไม่ใช้กับตัวเลขที่เป็นจุดทศนิยม
วิธีการ PACK “-123” สลับส่วน Zone bit และ Digit bit ของไบต์ขวาสุด วิธี Unpack ทำตรงกันข้าม กับการ Pack 1101 0001 1101 0011 1101 0110 0110 1101 0001 0011
4/5/2017 รหัส ASCII มี 2 ชนิด คือ 7 บิต กับ 8 บิต กำหนดให้ตัวเลขมีค่าน้อยกว่าตัวอักษร เป็นรหัสที่นิยมในปัจจุบัน ลักษณะคล้าย EBCDIC มี Zone bit เป็น 0101 และ 011 สำหรับตัวเลข มี 1010 และ 100 สำหรับตัวอักษร
รหัส EBCDIC และ ASCII
Parity bit หรือ Check bit เป็นบิทที่ใช้ตรวจสอบการแทนรหัส มี 2 ระบบ Even Parity ระบบจำนวนคู่ ระบบนี้ต้องมีบิทที่เป็นเลข 1 ทั้งหมดมีจำนวนเป็นเลขคู่ Odd Parity ระบบจำนวนคี่ ระบบนี้ต้องมีบิทที่เป็นเลข 1 ทั้งหมดมีจำนวนเป็นเลขคี่ 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
การแทนรหัสข้อมูลที่เป็นตัวเลข 4/5/2017 การแทนรหัสข้อมูลที่เป็นตัวเลข การแทนข้อมูลชนิดจำนวนเลข แบ่งออกเป็น 2 ประเภทคือ 1) การแทนเลขจำนวนเต็ม 2) การแทนเลขที่มีเศษส่วน (มีทศนิยม) การแทนข้อมูลแบบนี้กำหนดเนื้อที่ในหน่วย ความจำมีขนาดตายตัว (Fixed length word) สำหรับแทนตัวเลข 1 จำนวน Half-word ใช้เนื้อที่ 2 ไบต์ Full-word ใช้เนื้อที่ 4 ไบต์ Double-word ใช้เนื้อที่ 8 ไบต์
การแทนเลขจำนวนเต็ม Sign Magnitude / Pure binary code 2’s Complement 4/5/2017 การแทนเลขจำนวนเต็ม Sign Magnitude / Pure binary code 2’s Complement 1’s Complement
4/5/2017 Sign Magnitude ระบบนี้แบ่งโครงสร้างของเวิร์ดออกเป็น 2 ส่วน คือ ส่วนของเครื่องหมาย (Sign) และส่วนของขนาดของจำนวนเลข ซึ่งเรียกว่า Magnitude ในระบบที่กำหนดให้ 1 word = 32 bits กำหนดส่วนของการแทนดังนี้ บิตที่ 31 (ซ้ายสุด) จะเป็น Sign bit สำหรับแสดงเครื่องหมายว่าจำนวนนั้นเป็นจำนวนบวกหรือลบถ้าบิตนี้มีค่าเป็น 1 แสดงว่าเป็นเลขจำนวนลบ และถ้าเป็น 0 แสดงว่าเป็นเลขจำนวนบวก ส่วนบิต 0-30 จะแทนขนาดของเลขจำนวน (magnitude) ซึ่งขนาดของเลขจำนวนจะเป็นการเปลี่ยนเลขจำนวนนั้นจากฐานสิบเป็นฐานสองโดยตรง
Sign Magnitude MSB LSB บิตที่ 31 30 29 . . . 1 0 Sign 1 แทน บวก บิตที่ 31 30 29 . . . 1 0 Sign 1 แทน บวก 0 แทน ลบ Magnitude
ตัวอย่างการแทนค่าแบบ Sign Magnitude แสดงการแทน 50 = (00110010)2 และ - 50 กำหนดให้ 1 Word = 4 Bytes = 32 bits MSB LSB . . . 0 0 1 1 0 0 1 50 1 . . . 0 0 1 1 0 0 1 -50 บิตที่ 31 30 29 . . . 1 0 Magnitude
การแทนค่าแบบ 2’s complement 4/5/2017 การแทนค่าแบบ 2’s complement เป็นระบบที่นิยมใช้ การแสดงจำนวนเลขในระบบนี้ เลขบวก แทนด้วยเลขฐานสองที่แปลงได้จากจำนวนเลขที่ต้องการแทน เลขลบ แทนด้วยค่า 2’s Complement ของเลขจำนวนนั้น
ตัวอย่าง การแทนค่า 2’s Complement เช่น 28 = 111002 MSB LSB 28 000000.............0000000000 1 1 1 0 0 1 111111.............1111111111 0 0 0 1 1 + 1 1 111111.............1111111111 0 0 1 0 0 - 28
Floating Point Representation 4/5/2017 Floating Point Representation การแทนแบบนี้จะเป็นการแทนในรูปแบบของการแทนเลขทางวิทยาศาสตร์ คือ คูณด้วย 10 ยกกำลัง (Exponential Form) โดยอยู่ในรูปแบบมาตรฐาน คือ ตัวเลขหน้าจุด เป็น 0 เลขในหลักแรกหลังจุดทศนิยม ต้องไม่ใช่ 0 ดังนั้นเลข 1 จำนวนจะถูกแบ่งออกเป็น 3 ส่วน คือ 1) fraction หรือ mantissa หมายถึง เลขที่อยู่หลังจุด (เป็นเศษ) 2) exponent หรือ characteristic หมายถึง เลขยกกำลัง ซึ่งเป็นได้ทั้งกำลังบวกและกำลังลบ 3) sign หมายถึง เครื่องหมายของเลขจำนวน
Floating Point Representation R = +- M * B+- E เนื้อที่ในหน่วยความจำ 1 เวิร์ด จึงถูกแบ่งออกเป็น 3 ส่วน ดังนี้ บิตที่ 31 30 24 23 0 S E M S Sign แทนเครื่องหมาย บวก ลบ ของจำนวนเลข E Exponent ส่วนที่ยกกำลัง M Mantissa เลขที่อยู่หลังจุด
ขั้นตอนการแทนเลข Floating point 4/5/2017 ขั้นตอนการแทนเลข Floating point เปลี่ยนเลขเป็นฐาน 16 Normalization เลขฐาน 16 (มีเลขหน้าจุดเป็น 0 เลขหลังจุดตัวแรกไม่ใช่ 0 และ ยกกำลัง) เปลี่ยน Sign, Exponent, Mantissa เป็นเลขฐาน 2 Sign : 1 แทนค่าลบ 0 แทนค่าบวก Mantissa : เปลี่ยนเป็นฐาน 2 เติมเลขจากขวา มา ซ้ายที่เหลือเติมศูนย์
ขั้นตอนการแทนเลข Floating point Exponent เป็นได้ทั้งค่าบวก หรือ ลบ วิธีการแทนส่วนนี้สามารถใช้้วิธีเดียวกับการแทนเลขจำนวนเต็มก็ได้ ในที่นี้เนื่องจากส่วนนี้ใช้ 7 บิตในการแทน จึงใช้วิธี Excess 64 exponent 16 = 4016 + true exponent16 แปลง exponent16 ----> exponent 2 1 1 1 1 1 1 1 63 : 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 -1 0 0 0 0 0 0 0 -64
ตัวอย่าง ทำ Floating point 28 ----> 1C16 1C16 = (+ 0.1C x 102)16 Sign ----> 0 Mantissa ----> 0001 11002 Exponent ----> 4016 + 216 = 42 16 -----> 100 00102 100 0010 0001 1100 0000 . . . 0