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

สอนเลขฐาน