Transcript ระบบเลขฐาน
ระบบเลขฐาน ระบบเลขฐาน 10 คือ ระบบเลขจานวนทีเ่ ราใช้ อยู่ทวั่ ไป ตัว เลขทีใ่ ช้ ในระบบนีม้ ี 10 ตัว ตั้งแต่ 0 ถึง 9 โดยตัวเลขแต่ ละตัวจะมีค่าประจาตัว โดยค่ าน้ อยทีส่ ุ ดคือ 0 ตัวอย่ างที่ 1 45678 เป็ นตัวเลขในฐาน 10 สามารถกระจายได้ ดังนี้ 45678 = 40000+5000+600+70+8 หรื อ 4 5 6 7 8 8 x 10 0 = 8 7 x 10 1 = 70 6 x 10 2 = 600 5 x 10 3 = 5000 4 x 10 4 = 40000 45678 ตัวอย่ างที่ 2 123.45 เป็ นตัวเลขในฐาน 10 สามารถกระจายได้ ดังนี้ 123.45 = 100+20+3+.4+.05 หรื อ 1 2 3 . 4 5 5 x 10 -2 = .05 4 x 10 -1 = .4 3 x 10 0 = 3 2 x 10 1 = 20 1 x 10 2 = 100 123.45 ตัวเลขที่ใช้ ในระบบนีม้ ีเพียง 2 ตัว 0 และ 1 เท่ านั้น ตัวอย่ างที่ 1 1101012 = 1x25 + 1x24 + 0x23 + 1x22 + 0x21 + 1x20 หรือ 1 = 32 + 16 + 0 + 4 + 0 + 1 = 53 1 0 1 0 12 1x20 = 1 0x21 = 0 1x22 = 4 0x23 = 0 1 x 2 4 = 16 1 x 2 5 = 32 53 ตัวอย่ างที่ 2 10.0112 10.0112 = 1x21 + 0x20 + 0x2-1 + 1x2-2 + 1x2-3 = 2 +0 + 0 +1/4 + 1/8 = 2 + 0 +0 + 0.25 + 0.125 = 2.375 ระบบเลขฐาน 8 ตัวเลขทีใ่ ช้ ในระบบนีม้ ี 8 ตัวคือ ตั้งแต่ 0 ถึง 7 ตัวอย่ างที่ 1 21738 = 2x83 + 1x82 + 7x81 + 3x80 = 1024 + 64 + 56 +3 = 1147 ตัวอย่ างที่ 2 65.018 = 6x81 + 5x80 + 0x8-1 + 1x8-2 = 48 + 5 + 0 + 1/64 = 48 + 5 + 0 + .015625 = 53.015625 ระบบเลขฐาน 16 ตัวเลขทีใ่ ช้ ในระบบนีม้ ีท้งั หมด 16 ตัว คือตัวเลขและตัวอักษรปนกัน คือ 0 ถึง 9 และ 10 ถึง 15 ใช้ แทนด้ วยตัวอักษรคือ A = 10 B = 11 C = 12 D = 13 E = 14 F = 15 ตัวอย่ างที่ 1 13DF16 = 1x163 + 3x162 + 13x161 + 15x160 = 4096 + 768 + 208 + 15 = 5087 ตัวอย่ างที่ 2 7.2A16 = 0 -1 -2 7x16 + 2x16 + 10x16 = 7 + 2/16 + 10/162 = 7 + 0.125 + 0.390625 = 7.1640625 การเปลีย่ นเลขจากฐานต่ าง ๆ เป็ นฐาน 10 โจทย์ จงเปลี่ยน 1010112 เป็ นเลขฐาน 10 1 0 1 0 1 12 32 0 8 0 2 1 = 32 + 8 + 2 + 1 = 43 1010112 = 1x25 + 0x24 + 1x23 + 0x22 +1x21 + 1x20 = 32 + 0 + 8 + 0 + 2 + 1 = 43 โจทย์ จงเปลี่ยน 345.678 เป็ นเลขฐาน 10 345.678 = 3x82 + 4x81 + 5x80 + 6x8-1 + 7x8-2 = 576 + 32 + 5 + 0.75 +0.765625 = 614.515625 โจทย์ จงเปลี่ยน 1A5.F16 เป็ นเลขฐาน 10 1A5.1516 = 1x162 + 10x161 + 5x160 + 15x16-1 การเปลีย่ นเลขฐาน 10 เป็ นเลขฐานต่ าง ๆ จงเปลี่ยน 24610 เป็ นเลขฐาน 2 2 246 2 123 0 2 61 1 2 30 1 2 15 0 2 7 1 2 3 1 1 1 จงเปลี่ยน 456710 เป็ นเลขฐาน 8 8 4567 8 570 7 8 71 2 8 8 7 1 0 4567 10 = 107278 จงเปลี่ยน 5678910 เป็ นเลขฐาน 16 16 56789 16 3549 5 16 221 13 13 13 5678910 = DDD516 การแปลงเลขฐาน 2 เป็ นเลขฐาน 8 , 16 • ถ้ าแปลงเป็ นเลขฐาน 8 ให้ แบ่งข้ อมูลเป็ นชุด ชุดละ 3 bit ถ้ าไม่ครบ ให้ เพิ่ม 0 เข้ าไป เช่น 10011.012 010 011 010 = 23.28 • ถ้ าแปลงเป็ นเลขฐาน 16 ให้ แบ่งข้ อมูลเป็ นชุด ชุดละ 4 bit ถ้ าไม่ ครบให้ เพิ่ม 0 เข้ าไป เช่น 10011.012 0001 0011 0100 = 13.416 การแปลงเลขฐาน 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 แบบฝึ กหัด 1. จงหาค่าของจานวนต่อไปนี้ ออกมาเป็ นจานวนเลขในฐาน 10 1.1 1011012 1.2 EF16 1.3 1678 1.4 124.68 1.5 5AA.F16 2. จงเปลีย่ นเลขฐาน 10 ให้ เป็ นเลขฐาน 2,8 และ 16 2.1 421 2.2 1234 2.3 72431 3. จงเปลีย่ นเลขฐาน เหล่ านี้ ให้ เป็ นเลขฐาน 2 3.1 3.2 3.3 3.4 3478 12758 7AA116 EFB716 4. จงเปลีย่ นเลขฐาน 2 ให้ เป็ นเลขฐาน 8 และ 16 4.1 11101101.1112 4.2 1011111110.10011 2 4.3 11110001111.110012 การบวกลบเลขฐาน การบวก (Addition) วิธีทา 1. บวกเลขตั้งแต่ 2 จานวนขึน้ ไปตั้งหลักให้ ตรงกันจากขวา มาซ้ าย ผลบวกทีไ่ ด้ ใส่ ให้ ตรงหลัก 2. ถ้ าผลบวกได้ น้อยกว่ าฐานของเลขนั้นใส่ ได้ เลย 3. ถ้ าผลบวกได้ เท่ ากับหรือมากกว่ าฐาน จะต้ องเอาค่ าฐาน มาหักออกเสี ยก่ อน เพือ่ เป็ นตัวทดของหลักถัดไป และค่ าทีใ่ ส่ ใน หลักนั้น คือผลต่ างทีห่ ักฐานออกแล้ ว ซึ่งจะต้ องน้ อยกว่ าค่ าฐาน กฏการบวกเลขฐาน สอง โดยมีหลักการบวกดังนี้ 0+0=0 1+0=1 0+1 =1 1 + 1 = 10 (ทด 1) ตัวอย่ าง จงหาผลลัพธ์ ( 110)2 + ( 101 ) 2 110 1 0 1+ 2 1 1 (1 0 1 1) 2 ตัวอย่ าง จงหาผลลัพธ์ ( 1011 )2 + ( 1001 ) 2 1011 1 0 0 1+ 2 0 2 2 (1 0 1 0 0 ) 2 ตัวอย่ าง จงหาผลลัพธ์ ( 4711 )8 + ( 26534 )8 4711 26534 + ( 33445 )8 ตัวอย่ าง จงหาผลลัพธ์ ( 29EA5 )16 + ( 4CDE )16 2 9 E 5 A 4 C D E+ 14 27 24 19 (2 E B 10=A 11=B 8 3 )16 12=C 13=D 14=E 15=F ตัวอย่ าง จงหาผลลัพธ์ (ABDF.59 )16 + (8CD.AF) 16 A BDF .5 9 8 C D . A F+ ( B 4 A D . 0 8 ) 16 10=A 11=B 12=C 13=D 14=E 15=F การลบเลขฐาน (Subtraction) วิธีทา 1. ลบเลขตั้งแต่ 2 จานวนขึน้ ไปตั้งหลักตัวตั้งและตัวลบให้ ตรงกัน และลบทีละหลัก 2. ถ้ าตัวตั้งมีค่ามากกว่ าตัวลบลบได้ เลยใส่ คาตอบซึ่งเป็ น ผลต่ างให้ ตรงกับหลัก 3. ถ้ าตัวตั้งมีค่าน้ อยกว่ าตัวลบ ลบเลยทันทีไม่ ได้ จะต้ องขอ ยืมหลักถัดไปมา 1 ทาให้ หลักทีถ่ ูกยืมมีค่าลดลง 1 และทาให้ หลักที่ ไปยืมมามีค่าเท่ าค่ าของฐานบวกกับเลขทีม่ อี ยู่เดิม และทาการลบ โดยปกติ กฎการลบเลขฐานสอง 0– 0 = 0 0 – 1 = 1 (ยืมหลักทีส่ ู งกว่ า1) 1– 0=1 1–1=0 ตัวอย่ างการลบเลขฐาน 02 110 101001 ตัวอย่ าง จงหาผลลัพธ์ ( 11010 )2 - ( 1011) 2 1 10 1 0 10 1 111 1 1 = (1111 ) 2 ตัวอย่ าง จงหาผลลัพธ์ ( 1352 )8 - ( 643 ) 8 1352 634(5 1 6 ) 8 ตัวอย่ าง จงหาผลลัพธ์ ( D 7 3 A E )16 - ( 8 4 C B ) 16 D 73A E 84C B(C E E E 3 ) 16 ตัวอย่ าง จงหาผลลัพธ์ (F 5 6 A B . F 6 )16 - (8 7 A B .5 A) 16 F56 A B . F 6 8 7 A B . 5 A( E C F 0 0 . 9 C) 16 คอมพลีเมนต์ (Complement) • ระบบเลขที่ใช้กนั ใน Computer จะเป็ นเลข Binary ดังนั้น หากต้องการบวกและลบเลขจึงจาเป็ นต้องมีท้ งั วงจรบวกเลขและลบเลข จึงทาให้เกิดความยุง่ ยากมาก อีกทั้งหากผลลัพธ์เกิดค่าทีต่ ิดลบจะเกิด ปัญหาว่าจะแสดงเครื่ องหมายอย่างไร • ดังนั้น ในระบบ Computer จะมีการนา Complement มา ใช้ในการลบเลขแต่จะใช้วิธีการบวกกับ Complement ของตัว ลบ ซึ่งจะได้ผลลบ และหากผลลัพธ์เกิดมีค่าติดลบ ก็จะแสดงค่าผลลัพธ์ เป็ นเลข Complement การคอมพลีเมนต์ เลขฐานสอง ในระบบเลข Binary จะมี Complement อยู่ 2 อย่าง คือ • 1’s complement คือการกลับสถานะของสัญญาณ จาก 0 เป็ น 1 และ จาก 1 เป็ น 0 ทุก ๆ บิต เช่น 1’s complement ของ 1100011 คือ 0011100 • 2’s complement คือผลบวกของ 1’s complement กับ 1 เช่น 2’s complement ของ 1100011 คือ 0011100 + 1 = 0011101 ซึ่ งมีวิธีคิดแบบลัดคือ ให้มองจากบิตต่าสุ ด(ขวาสุ ด) ไปยังบิต สูงสุ ด(ซ้ายสุ ด) หา 1 ตัวแรกให้พบ หากยังไม่พบ ให้คงค่าเดิมเอาไว้ จนกระทั้ง พบ 1 ตัวแรกก็ยงั คง 1 ไว้ หลังจากนั้นให้เปลี่ยนค่าที่เหลือ จาก0 เป็ น 1 และ จาก 1 เป็ น 0 ทั้งหมด Binary Number 1’s complement 2’s complement 10101 01010 01011 10111 01000 01001 111100 000011 000100 00100101 11011010 11011011 การลบเลขโดยใช้ คอมพลีเมนต์ ฐาน • จากประโยชน์ของเลขคอมพลีเมนต์ที่ใช้ในการหาผลลบของระบบเลขโดยใช้การ บวกและสามารถแสดงค่าที่ติดลบได้น้ นั ทาให้ในระบบ computer นิยมนา complement ใช้ในการลบเลข ซึ่ งหากใช้คอมพลีเมนต์ฐานในการลบเลขมี วิธีการคิดดังนี้ • หาคอมพลีเมนต์ฐานของตัวลบ ถ้าตัวลบมีจานวนหลักน้อยกว่าตัวตั้ง ก็ตอ้ งทา จานวนหลักของตัวลบให้มีจานวนหลักเท่ากับตัวตั้งก่อนแล้วจึงหาค่อยคอมพลี เมนต์ฐาน • นาตัวตั้งมาบวกกับคอมพลีเมนต์ฐานของตัวลบที่หาได้จากข้อ 1) • ตรวจสอบผลลัพธ์ที่ได้จากการบวกในข้อ 2) ว่ามีตวั ทดสุ ดท้าย (End around carry)หรื อไม่ – ถ้ามี End around carry ให้ตดั ทิ้ง ที่เหลือจะได้ค่าผลลัพธ์ที่ได้จากการลบ โดยมี ค่าเป็ นบวก – ถ้าไม่มี End around carry ก็ให้หาคอมพลีเมนต์ฐานของผลลัพธ์ที่ได้ ซึ่ งจะได้ ผลลัพธ์ที่ได้จาการลบตามต้องการ แต่มีค่าเป็ นลบ การลบเลขโดยใช้ คอมพลีเมนต์ ฐาน • ตัวอย่าง จงลบเลขฐานสองต่อไปนี้ โดยใช้ 2’s complement • 1100 – 1011 • วิธีทา ลบแบบธรรมดา ลบโดยใช้ 2’s complement • 1100 1100 • - 1011 + 0101 2’s complement 0001 1 0001 มี End around carry ให้ตดั ทิ้ง ผลลบ คือ 0001 การลบเลขโดยใช้ คอมพลีเมนต์ ฐาน ตัวอย่าง จงลบเลขฐานสองต่อไปนี้ โดยใช้ 2’s complement 10011 – 11100 วิธีทา ลบแบบธรรมดา ลบโดยใช้ 2’s complement 10011 10011 - 11100 + 00100 2’s Complement - 01001 10111 ไม่มี End around carry ผลลบ คือ –( 2’s complement ของ 10111) = -01001 รหัสแทนข้ อมูล (Data Representation) รหัสข้ อมูล คือ รหัสทีใ่ ช้ แทนตัวเลข ตัวอักษร หรือ สั ญลักษณ์ ต่าง ๆ ทีม่ อี ยู่ในโปรแกรมหรือไฟล์ ข้อมูลเมือ่ มีการ ประมวลผลด้ วยเครื่องคอมพิวเตอร์ รหัสทีใ่ ช้ แทนข้ อมูลมีอยู่ด้วยกันหลายแบบ ทีน่ ิยมได้ แก่ • รหัสเอ็บซีดคิ (EBCDIC : Extended Binary Coded Decimal Interchange Code) • รหัสแอสกี้ (ASCII : American Standard Code for Information Interchange) •รหัส Unicode รหัสแอสกี้ • เป็ นมาตรฐานที่นิยมใช้กนั มากในระบบคอมพิวเตอร์และระบบสื่อสาร ข้อมูล • รหัสแทนข้อมูลชนิดนี้ใช้เลขฐานสองจานวน 8 บิตหรื อเท่ากับ 1 ไบต์ แทนอักขระหรื อสัญลักษณ์แต่ละตัว ซึ่ง หมายความว่าการแทนอักขระ แต่ละตัวจะประกอบด้วยตัวเลขฐานสอง 8 บิตเรี ยงกัน รหัสเอ็บซีดิค • พัฒนาโดยบริ ษทั ไอบีเอ็ม รหัสแทนข้อมูลนี้ไม่เป็ นที่นิยมใช้แล้วใน ปัจจุบนั • การกาหนดรหัสจะใช้ 8 บิต ต่อหนึ่งอักขระ เหมือนกับรหัสแอสกี แต่ แบบของรหัสที่กาหนดจะแตกต่างกัน รหัสยูนิโค้ด (Unicode) • เป็ นรหัสที่สร้างขึ้นมาในระยะหลังที่มีการสร้างแบบตัวอักษรของภาษาต่างๆ • รหัสยูนิโค้ดเป็ นรหัสที่ต่างจาก 2 ชนิดที่ได้กล่าวมาข้างต้น คือใช้ เลขฐานสอง 16 บิตในการแทนตัวอักษร • ที่มาคือ เมื่อมีการใช้งานคอมพิวเตอร์ในหลายประเทศและมีการสร้างแบบ ตัวอักษร (font) ของภาษาต่างๆ ทัว่ โลก ในบางภาษาเช่น ภาษาจีน และ ภาษาญี่ปุ่น เป็ นภาษาที่เรี ยกว่าภาษารู ปภาพซึ่งมีตวั อักษรเป็ นหมื่นตัว หากใช้ รหัสที่เป็ นเลขฐานสอง 8 บิต เราสามารถแทนรู ปแบบตัวอักษรได้เพียง 256 รู ปแบบ ซึ่งไม่สามารถแทนตัวอักษรได้ครบ จึงสร้างรหัสใหม่ข้ ึนมา ที่สามารถแทนตัวอักขระได้ถึง 65,536 ตัว ซึ่งมากพอและสามารถแทน สัญลักษณ์กราฟิ กและสัญลักษณ์ทางคณิ ตศาสตร์ได้อีกด้วย การจัดเก็บข้อมูลในหน่วยความจา • เพื่อให้ขอ้ มูลที่เก็บมีความถูกต้อง การเขียนหรื ออ่านทุกครั้งจึงต้อง ตรวจสอบความ ถูกต้องของข้อมูล วิธีที่ง่ายและนิยมใช้กนั คือการเพิ่มบิต พาริ ตี (parity bit) เพื่อตรวจสอบจานวนเลข 1 ในรหัสแทนข้อมูล ว่ามีจานวนคู่ หรื อจานวนคี่ ตัวอย่างเช่น พาริ ตีคู่ (even parity) ซึ่ง เป็ นการทาให้จานวนของเลข 1 เป็ นจานวนคู่ การจัดเก็บข้อมูลในหน่วยความจา B A N G K O K 01000010 01000001 01001110 01000111 01001011 01001111 01001011 0 0 0 0 0 1 0 เมื่อต้องการตรวจสอบความถูกต้อง ของข้อมูล ให้พิจารณาจานวนของ เลข 1 ที่ปรากฏในรหัสแทนข้อมูล นั้นร่ วมกับบิตพาริ ตี ถ้ามีเป็ น จานวนคู่แสดงว่าข้อมูลถูกต้อง แต่ ถ้าได้เป็ นจานวนคี่แสดงว่าข้อมูลไม่ ถูกต้อง แบบฝึ กหัด 1. จงหาค่าของจานวนต่อไปนี้ 1.1 10110112 + 11110012 1.2 10111012 - 1101112 1.3 1276448 + 7555018 1.4 5371678 - 875018 1.5 E3124F16 + 1DA416 1.6 AE5AA16 - A3F4F16 แบบฝึ กหัด 2. จงลบเลขฐานสองต่อไปนี้ โดยใช้ 2’s complement 2.1 1011102 - 1110012 2.2 11111012 - 1101112 2.3 10111012 - 110111012 2.4 11011012 - 110101112