บทที่ 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
2

6

1

2

3

0

1

ตอบ 11012

)4
13
3

1

ตอบ

314

1

การแปลงเลขฐาน 10 เป็น
ฐานใดๆ
❚ กรณี เลขจำานวนจริง: การแปลงแบ่งเป็ น 2
ส่วน
ิ ี MODULO
❚ ส่วนหน้าจุดทศนิ ยมใช้วธ
❚ ส่วนเลขหลังจุดทศนิ ยม

❙ คูณเลขหลังจุดด้วยฐานที่จะไป บันทึกเฉพาะเลข
หน้าจุด
❙ ส่วนเลขหลังจุดนำามาคูณต่อ จนครบจำานวน
ตำาแหน่ งหลังจุดที่ต้องการ

ตัวอย่างการแปลงเลขฐาน
10 เป็นฐานใดๆ
❚ เลขจำานวนจริ

13.4
2 13
2

6

1

2

3

0

1

10

= (
.4
.8
.6
.2

*
*
*
*

)2
2
2
2
2

=
=
=
=

0
1
1
0

.8
.6
.2
.4

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

0 0 0 1

0*8)+(0*4)+(0*2)+(1*1)
1

1 1 00 0

(1*8)+(1*4)+(0*2)+(0*1)
12
C

การแปลงเลขฐาน 8 ฐาน 16
เป็น ฐาน 2
❚ ใช้หลักการกระจายเลขแต่ละหลัก
ออกเป็ น บิท
❚ เลขฐาน 8 หนึ่ งหลัก กระจายเป็ น
เลขฐาน 2 ได้ 3 บิท
❚ เลขฐาน 16 หนึ่ งหลัก กระจายเป็ น
เลขฐาน 2 ได้ 4 บิท

ตัวอย่างการแปลงเลขฐาน 8
ฐาน 16 เป็น ฐาน 2
❚ กรณี เลขจำานวนเต็ม
738 =(

)2

A316 = (

7

1

1

3

1

0

Ans: 1110112

1

)

2

10

1

1010

3

0011

Ans: 1010000116

ตัวอย่างการแปลงเลขฐาน 8
ฐาน 16 เป็น ฐาน 2
❚ กรณี เลขจำานวนจริง
7.38 =(
7

1

1

)2

A3.B16 = (

.

1

3

0

1

Ans: 111 . 0112

10

3

1 1010 0011

)
.

2

11

1011

Ans: 10100001.101116

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

การบวกเลขฐาน
❚ การบวก
1101.112
+
0111.012
10101.00

2

F31C16

5345
+
1235

คำานวณไม่ได้
เพราะไม่มีเลข
5 ในฐาน 5

+
235016
1266C16

การลบเลขฐาน
❚ การลบเลข
1435

1011.0112
0111.1012

2345

0011.1102

4325
-

การหาคอมพลีเมนท์
(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

่ สูงสุดคือ 111.11
❙ เลข 101.112 มีคา
❘ 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)
2)

432 +
301
1 233 +
1
234

2)

1
1
111.111
- 0111.101=
1011.011 +
1000.010
1 0011.101 +
1
0011.110

000

ตัวอย่างการลบเลขแบบ
คอมพลีเมนท์
❚ คอมพลีเมนท์ ที่ R
4325 - 1435 = ?1011.011 2- 111.1012 = ?

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

432 +
302
1 234

2)

ตัดทิ้ง

1011.011 +
1000.011
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

่ เป็ น
1111
❚ การบันทึกแบบตัวเลข Zone bit มีคา
สำาหรับเลขที่ไม่มเี ครื่องหมายนำาหน้า ( 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
ทั้งหมดมีจำานวนเป็ นเลขคู่
❚ Odd Parity ระบบจำานวนคี่
ระบบนี้ ต้องมีบท
ิ ที่เป็ นเลข 1
ทั้งหมดมีจำานวนเป็ นเลขคี่

1 110001
0 110101
0 110001
1 110101

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

การแทนเลขจำานวนเต็ม
❚ Sign Magnitude / Pure binary code
❚ 2’ Complement
❚ 1’ Complement

Sign Magnitude
❚ ระบบนี้ บิทซ้ายสุดแทนเครื่องหมาย
เรียกว่า Sign bit ที่เหลือแทนขนาด
ของจำ

นวนเลข
เรี

กว่

Magnitude
MSB
LSB
Sign
bit

แทน ลบ
0 แทน บวก

Magnitude

1

1 Word = 4 Byte = 32 Bit

แสดงการแทนค่า
❚ แบบ Sign Magnitude
1 Word = 4 Byte = 32 bit
31 32
2

0
1

0
0

1

0

.........................
0 1 1 0 0 1 25=110012
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

Sign
Exponent
Mantissa

0

Sign แทนเครื่องหมาย บวก ลบ ของจำานวน
Exponent ส่วนที่ยกกำาลัง
Mantissa เลขที่อยู่หลังจุด

ขัน
้ ตอนการทำา Floating point
❚ เปลี่ยนเลขไปเป็ นฐาน 16
❚ Normalization เลขฐาน 16 (มีเลขหลังจุด และ
ยกกำาลัง)
❚ เปลี่ยน Sign, Exponent, Mantissa เป็ นเลขฐาน
2

❙ Sign : 1 แทนค่าลบ 0 แทนค่าบวก
❙ Mantissa : เปลี่ยนเป็ นฐาน 2 เติมเลขจากขวา มา
ซ้ายที่เหลือเติมศูนย์

ขัน
้ ตอนการทำา Floating point
❚ Exponent เป็ นได้ท้ังค่าบวก หรือ
ลบ จึงต้องใช้วธ
ิ ี Excess 64
❙ exponent

❙ exponent16

16

= 4016

+ true exponent16

----> exponent

2

0

ตัวอย่าง ทำา Floating point
❚ 28 ----> 1C16

❚ 1C16 = (+.1C * 102)16

❚ Sign ----> 0
❚ Mantissa ----> 0001 11002

❚ Exponent ----> 4016 + 216 = 42
00102

16

-----> 100

100 0010 0001 11000000..........................

Sign up to vote on this title
UsefulNot useful