You are on page 1of 45

บทที่ 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
การแปลงเลขฐานใดๆเป็น
ฐาน 10
❚ อาศัยค่าประจำา ต.ย. 11012 = ( )10
หลัก คูณตัวเลข ค่าประจำาหลัก คือ
แต่ละหลัก นำา 23 22 21 20
ผลคูณที่ได้มา (1*8)+(1*4)+(0*2)+(
รวมกัน 1*1)
= 13
การแปลงเลขฐาน 10 เป็น
ฐานใดๆ
❚ กรณี เลขจำานวนเต็ม
❚ ใช้หลัก MODULO คือ
❙ เลขฐาน 10 เป็ นตัวตั้ง หารด้วยเลขฐานที่กำาลัง
จะแปลง
❙ ให้เก็บเศษจากการหาร
❙ หารเลขต่อไปจนกระทั้งไม่สามารถหารได้
❙ นำาเศษของการหารมาวางต่อกัน เศษตัวสุดท้าย
เป็ น Most significant
ตัวอย่างการแปลงเลขฐาน
10 เป็นฐานใดๆ
❚ เลขจำานวนเต็ม
1310 = ( )2 1310 = ( )4

2 13 4 13
2 6 1 3 1
2 3 0

1 1

ตอบ 11012 ตอบ 314
การแปลงเลขฐาน 10 เป็น
ฐานใดๆ
❚ กรณี เลขจำานวนจริง: การแปลงแบ่งเป็ น 2
ส่วน
ิ ี MODULO
❚ ส่วนหน้าจุดทศนิ ยมใช้วธ
❚ ส่วนเลขหลังจุดทศนิ ยม
❙ คูณเลขหลังจุดด้วยฐานที่จะไป บันทึกเฉพาะเลข
หน้าจุด
❙ ส่วนเลขหลังจุดนำามาคูณต่อ จนครบจำานวน
ตำาแหน่ งหลังจุดที่ต้องการ
ตัวอย่างการแปลงเลขฐาน
10 เป็นฐานใดๆ
❚ เลขจำานวนจริ
13.4ง 10 = ( )2

2 13 .4 * 2 = 0 .8
.8 * 2 = 1 .6
2 6 1 .6 * 2 = 1 .2
2 3 0 .2 * 2 = 0 .4

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 00 0
0 0 0 1

0*8)+(0*4)+(0*2)+(1*1) (1*8)+(1*4)+(0*2)+(0*1)
12
1
C
การแปลงเลขฐาน 8 ฐาน 16
เป็น ฐาน 2
❚ ใช้หลักการกระจายเลขแต่ละหลัก
ออกเป็ น บิท
❚ เลขฐาน 8 หนึ่ งหลัก กระจายเป็ น
เลขฐาน 2 ได้ 3 บิท
❚ เลขฐาน 16 หนึ่ งหลัก กระจายเป็ น
เลขฐาน 2 ได้ 4 บิท
ตัวอย่างการแปลงเลขฐาน 8
ฐาน 16 เป็น ฐาน 2
❚ กรณี เลขจำานวนเต็ม
738 =( )2 A316 = ( ) 2

7 3 10 3

1 1 1 0 1 1 1010 0011

Ans: 1110112 Ans: 1010000116
ตัวอย่างการแปลงเลขฐาน 8
ฐาน 16 เป็น ฐาน 2
❚ กรณี เลขจำานวนจริง
7.38 =( )2 A3.B16 = ( ) 2

7 . 3 10 3 . 11

1 1 1 0 1 1 1010 0011 1011

Ans: 111 . 0112 Ans: 10100001.101116
การคำานวณเลขฐาน

❚ การบวกเลขฐาน
❚ การลบเลขฐาน
❚ การลบเลขฐาน แบบ Complement
การบวกเลขฐาน

❚ การบวก
1101.112 5345 F31C16
+ + +
0111.012 1235 235016

10101.00 2
คำานวณไม่ได้ 1266C16
เพราะไม่มีเลข
5 ในฐาน 5
การลบเลขฐาน

❚ การลบเลข
4325 1011.0112
- -
1435 0111.1012

2345 0011.1102
การหาคอมพลีเมนท์
(Complement)
❚ Complement ของฐานใดๆ (ให้ R
แทนฐาน) มี 2 ประเภท คือ
Complement R และ Complement R
-1 1’ Comp
ฐาน R-1’ Comp.2’ Comp.
R’ Comp
7’ Comp 8’ Comp
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.
4325 - 1435 = ?1011.011 2- 111.1012 = ?

1) 444 - 143 = 301
1) 1
111.111 - 0111.101=
1 000

2) 432 + 2) 1011.011 +
301 1000.010
1 233 + 1 0011.101 +
1 1
234 0011.110
ตัวอย่างการลบเลขแบบ
คอมพลีเมนท์
❚ คอมพลีเมนท์ ที่ R
4325 - 1435 = ?1011.011 2- 111.1012 = ?

1) 1000 - 143 = 1)
302 10000.000 - 0111.101=1000.0

2) 432 + 2) 1011.011 +
302 1000.011
1 234 1 0011.110

ตัดทิ้ง
การแทนรหัสข้อมูลในหน่วย
ความจำา
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
สำาหรับเลขที่ไม่มเี ครื่องหมายนำาหน้า ( 12 ,F)
1100 สำาหรับเลขที่มเี ครื่องหมายบวก และ (+12 ,C)
1101 สำาหรับเลขที่มีเครื่องหมายลบ (-12 ,D)
การแทนข้อมูลแบบ Packed
Decimal
❚ เป็ นการเปลี่ยนลักษณะการเก็บ
รหัส EBCDIC ให้ใช้ในการคำานวณ
❚ การเปลี่ยนนี้ จำานวนหลักสามารถ
ยืดหยุ่นได้
❚ ไม่ใช้กับตัวเลขที่เป็ นจุดทศนิ ยม
วิธีการ PACK

❚ “-123” 1101 0001 1101 0010 1101 0011
❚ สลับส่วน Zone bit และ Digit bit ของไบท์ขวาสุด
❚ ตัด Zone bit ของไบท์ ที่เหลือ
❚ บีบข้อมูลซึ่งเป็ น Digit Bit เข้ามา
❚ มักทำาอยู่ในเลขฐาน 16 (123D)16
❚ วิธี Unpack ทำาตรงกันข้าง กับการ Pack
รหัส ASCII

❚ มี 2 ชนิ ด คือ 7 บิท กับ 8 บิท
กำาหนดให้ตว ั เลขมีค่าน้อยกว่าตัว
อักษรเป็ นรหัสที่นิยมในปั จจุบัน
❚ ลักษณะคล้าย EBCDIC มี Zone bit
เป็ น 0101 และ 011 สำาหรับตัวเลข
มี 1010 และ 100 สำาหรับตัวอักษร
Parity bit หรือ Check bit

❚ เป็ นบิทที่ใช้ตรวจสอบการ
แทนรหัส มี 2 ระบบ
❚ Even Parity ระบบจำานวนคู่
ิ ที่เป็ นเลข 1
ระบบนี้ ต้องมีบท
ทั้งหมดมีจำานวนเป็ นเลขคู่ 1 110001
❚ Odd Parity ระบบจำานวนคี่
ระบบนี้ ต้องมีบทิ ที่เป็ นเลข 1 0 110101
ทั้งหมดมีจำานวนเป็ นเลขคี่
0 110001

1 110101
การแทนรหัสข้อมูลทีเ่ ป็น
ตัวเลข
❚ การแทนข้อมูลแบบนี้ กำาหนดเนื้ อที่ใน
หน่ วยความจำามีขนาดตายตัว (Fixed leng
th word) สำาหรับแทนตัวเลข 1 จำานวน
❚ half-word ใช้เนื้ อที่ 2 ไบท์
❚ Full-word ใช้เนื้ อที่ 4 ไบท์
❚ Double-word ใช้เนื้ อที่ 8 ไบท์
การแทนเลขจำานวนเต็ม

❚ Sign Magnitude / Pure binary code
❚ 2’ Complement
❚ 1’ Complement
Sign Magnitude

❚ ระบบนี้ บิทซ้ายสุดแทนเครื่องหมาย
เรียกว่า Sign bit ที่เหลือแทนขนาด
ของจำ
MSB
านวนเลข เรี
ย กว่
า Magnitude
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 0 .........................
0 0 1 1 0 0 1 25=110012

1 0 0 ......................... 0 1 1 0 0 -25
1
แสดงการแทนค่า

❚ แบบ 2’ Complement
❚ เป็ นระบบที่นิยมใช้
❚ การแสดงจำานวนเลขในระบบนี้
❙ เลขบวก แทนเหมือนระบบ Sign
Magnitude
❙ เลขลบ แทนด้วยค่า 2’ Complement
ของเลขจำานวนนั้น
ตัวอย่าง การแทนค่า 2’
Complement
❚ เช่น 28 = 111002
MSB LSB
000000.............0000000000
0 11100

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
Sign แทนเครื่องหมาย บวก ลบ ของจำานวน
Exponent ส่วนที่ยกกำาลัง
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..........................