ระบบเลขฐาน

Download Report

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