2....

26
2. การแทนข้อมูลในคอมพิวเตอร์ องค์ประกอบคอมพิวเตอร์ใดๆ ขึ้นอยู่กับว่ามีการแทนตัวเลข ตัวอักษร และข้อมูลการควบคุมอย่างไร การ สนทนาก็เป็นจริงเช่นกัน: มาตรฐานและอนุสัญญาที่จัดตั้งขึ้นในช่วงหลายปีท่ผ่านมา ได้กาหนดแง่มุมบางประการ ขององค์กรคอมพิวเตอร์ บทนี้จะอธิบายถึงวิธีการต่างๆ ที่คอมพิวเตอร์สามารถจัดเก็บและจัดการกับตัวเลขและ ตัวอักษร แนวคิดที่นาเสนอในส่วนต่อไปนี้เป็นพื้นฐานสาหรับการทาความเข้าใจองค์กรและหน้าที่ของระบบดิจิตอล ทุกประเภท หน่วยข้อมูลพื้นฐานที่สุดในคอมพิวเตอร์ดิจิตอลเรียกว่าบิต ซึ่งเป็นการดึงตัวอักษรจากคาว่า BInary digiT: bit ในแง่ที่เป็นรูปธรรมไม่มีอะไรมากไปกว่าสถานะ "เปิด" หรือ "ปิด" (หรือ "สูง" และ "ตา") ภายในวงจร คอมพิวเตอร์ ในปี 1964 ผู้ออกแบบคอมพิวเตอร์เมนเฟรมของ IBM System/360 ได้กาหนดรูปแบบการใช้กลุ่ม 8 บิต เป็นหน่วยพื้นฐานของการจัดเก็บข้อมูลคอมพิวเตอร์ พวกเขาเรียกชุดนี้ว่า 8 บิตต่อไบต์ เวิร์ด (Word) ในคอมพิวเตอร์ประกอบด้วยสองหรือมากกว่าสองไบต์ที่อยู่ติดกัน ซึ่งบางครั้งมีการแก้ไข และเกือบทุกครั้งจะถูกจัดการโดยรวม ขนาดของเวิร์ดหมายถึงขนาดข้อมูลที่จัดการอย่างมีประสิทธิภาพมากที่สุด โดยสถาปัตยกรรมเฉพาะ เวิร์ดอาจมีขนาด 16 บิต, 32 บิต, 64 บิตหรือขนาดอื่นๆ ที่เหมาะสมในบริบทขององค์กร ของคอมพิวเตอร์ (รวมถึงขนาดที่ไม่ใช่ทวีคูณแปด) ไบต์ 8 บิตสามารถแบ่งออกเป็นสองส่วน 4 บิตที่เรียกว่า nibbles (หรือ nibbles) เนื่องจากแต่ละบิตของไบต์มีค่าอยู่ภายในระบบการกาหนดตัวเลขตาแหน่งแทนทีประกอบด้วยเลขฐานสองที่มีค่าน้อยที่สุดจึงถูกเรียกว่า low-order nibble ซึ่งประกอบด้วยสี่บิตล่าง และอีก ครึ่งหนึ่งเป็น high-order nibble ที่ประกอบด้วยสี่บิตบน 2.2 ระบบการนับตาแหน่ง ในช่วงกลางศตวรรษที่สิบหกยุโรปใช้ระบบเลขฐานสิบ (base 10) ที่ชาวอาหรับและฮินดูใช้มาเป็นเวลา เกือบหนึ่งพันปี วันน้เรารับทราบว่าหมายเลข 243 หมายถึงสองร้อยบวกสี่สิบบวกสามหน่วย แม้ว่าความจริงที่ว่า ศูนย์หมายถึง "ไม่มีอะไร" ทุกคนแทบจะรู้ว่ามีความแตกต่างอย่างมากระหว่างการมีสิ่งใดสิ่งหนึ่งและมี 10 อย่าง

Upload: others

Post on 30-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

2. การแทนขอมลในคอมพวเตอร

องคประกอบคอมพวเตอรใดๆ ขนอยกบวามการแทนตวเลข ตวอกษร และขอมลการควบคมอยางไร การ

สนทนากเปนจรงเชนกน: มาตรฐานและอนสญญาทจดตงขนในชวงหลายปทผานมา ไดก าหนดแงมมบางประการ

ขององคกรคอมพวเตอร บทนจะอธบายถงวธการตางๆ ทคอมพวเตอรสามารถจดเกบและจดการกบตวเลขและ

ตวอกษร แนวคดทน าเสนอในสวนตอไปนเปนพนฐานส าหรบการท าความเขาใจองคกรและหนาทของระบบดจตอล

ทกประเภท

หนวยขอมลพนฐานทสดในคอมพวเตอรดจตอลเรยกวาบต ซงเปนการดงตวอกษรจากค าวา BInary digiT:

bit ในแงทเปนรปธรรมไมมอะไรมากไปกวาสถานะ "เปด" หรอ "ปด" (หรอ "สง" และ "ต า") ภายในวงจร

คอมพวเตอร ในป 1964 ผออกแบบคอมพวเตอรเมนเฟรมของ IBM System/360 ไดก าหนดรปแบบการใชกลม 8

บต เปนหนวยพนฐานของการจดเกบขอมลคอมพวเตอร พวกเขาเรยกชดนวา 8 บตตอไบต

เวรด (Word) ในคอมพวเตอรประกอบดวยสองหรอมากกวาสองไบตทอยตดกน ซงบางครงมการแกไข

และเกอบทกครงจะถกจดการโดยรวม ขนาดของเวรดหมายถงขนาดขอมลทจดการอยางมประสทธภาพมากทสด

โดยสถาปตยกรรมเฉพาะ เวรดอาจมขนาด 16 บต, 32 บต, 64 บตหรอขนาดอนๆ ทเหมาะสมในบรบทขององคกร

ของคอมพวเตอร (รวมถงขนาดทไมใชทวคณแปด) ไบต 8 บตสามารถแบงออกเปนสองสวน 4 บตทเรยกวา

nibbles (หรอ nibbles) เนองจากแตละบตของไบตมคาอยภายในระบบการก าหนดตวเลขต าแหนงแทนท

ประกอบดวยเลขฐานสองทมคานอยทสดจงถกเรยกวา low-order nibble ซงประกอบดวยสบตลาง และอก

ครงหนงเปน high-order nibble ทประกอบดวยสบตบน

2.2 ระบบการนบต าแหนง

ในชวงกลางศตวรรษทสบหกยโรปใชระบบเลขฐานสบ (base 10) ทชาวอาหรบและฮนดใชมาเปนเวลา

เกอบหนงพนป วนนเรารบทราบวาหมายเลข 243 หมายถงสองรอยบวกสสบบวกสามหนวย แมวาความจรงทวา

ศนยหมายถง "ไมมอะไร" ทกคนแทบจะรวามความแตกตางอยางมากระหวางการมสงใดสงหนงและม 10 อยาง

แนวคดทวไปทซอนอยเบองหลงระบบการก าหนดหมายเลขต าแหนง คอคาตวเลขแสดงผานตวยกก าลงท

เพมขนของฐาน สงนมกถกเรยกวาระบบการก าหนดหมายเลขแบบถวงน าหนก เนองจากแตละต าแหนงจะถกถวง

น าหนกดวยตวยกก าลงของเลขฐาน

ชดของตวเลขทถกตองส าหรบระบบหมายเลขต าแหนงมขนาดเทากบ radix ของระบบนน ตวอยางเชนม

ตวเลข 10 ตวในระบบเลขฐานสบ, 0 ถง 9 และม 3 ตว(ฐาน 3) ส าหรบระบบทประกอบไปดวย 0, 1 และ 2

หมายเลขทถกตองมากทสดในระบบ Radix คอ จะนอยกวาฐานอยหนง radix ดงนน 8 ไมใชตวเลขทถกตองใน

ระบบ Radix ใด ๆ ทมขนาดเลกกวา 9 เพอแยกความแตกตางระหวางตวเลขใน radices ทแตกตางกนเราใช

radix เปนตวหอยเชนใน 3310 เพอแทนเลข 33 ในฐานสบ (ในทนตวเลขทเขยน โดยไมมตวหอยเปนเลขฐานสบ)

เลขจ านวนเตมฐานสบใด ๆ สามารถแสดงไดอยางชดเจนในระบบฐานอนทกรลอน ๆ (ดตวอยางท 2.1)

ตวอยาง 2.1 ตวเลขสามจ านวนจะแสดงเปนตวยกก าลงของ Radix

ระบบเลขฐานทส าคญทสดในวทยาการคอมพวเตอรคอเลขฐานสอง และเลขฐานสบหก อกหนงเลขฐานท

นาสนใจคอฐานแปด ระบบเลขฐานสองใชเฉพาะตวเลข 0 และ 1; ระบบฐานแปด, 0 ถง 7 ระบบเลขฐานสบหก

อนญาตใหตวเลข 0 ถง 9 กบ A, B, C, D, E และ F ทใชเพอแทนตวเลข 10 ถง 15 ตารางท 2ใ1 แสดงเรดต

บางสวน

2.3 การแปลงระหวางฐาน

Gottfried Leibniz (1646-1716) เปนคนแรกทสรปแนวคดของระบบเลขฐานสบ ทแปลงไปยงฐานอนๆ

การเปนคนทมจตวญญาณอยางลกซง ไลบนซกลาวถงคณสมบตอนสงสงของระบบเลขฐานสอง เขามความสมพนธ

กบความจรงทวาจ านวนเตมใดๆ สามารถแทนดวยชดของ 1 และ 0 กบแนวคดทวาพระเจา (1) สรางจกรวาลโดย

ปราศจากอะไรเลย (0) จนกระทงคอมพวเตอรดจตอลไบนารตวแรกถกสรางขนในปลายทศวรรษท 1940 ระบบนก

ยงคงไมไดมอะไรมากไปกวาความอยากรทางคณตศาสตร วนนมนเปนหวใจของอปกรณอเลกทรอนกสแทบทก

ประเภททตองอาศยการควบคมแบบดจตอล

เนองจากความเรยบงายระบบเลขฐานสอง จงสามารถแปลงเปนวงจรอเลกทรอนกสไดอยางงายดาย

นอกจากนยงเปนเรองงายส าหรบมนษยทจะเขาใจ ผเชยวชาญดานคอมพวเตอรทมประสบการณสามารถจดจ า

เลขฐานสองทเลกกวา (เชนทแสดงในตารางท 2ใ1) ไดอยางรวดเรว อยางไรกตามการแปลงคาและเศษสวนทมาก

ขนมกจะตองใชเครองคดเลขหรอดนสอและกระดาษ โชคดทเทคนคการแปลงนนงายตอการฝกฝน เราแสดง

เทคนคทงายกวาในสวนทตามมา

2.3.1 การแปลงหมายเลขทงหมด

เรมตนดวยการแปลงฐานของตวเลขทไมมเครองหมาย(unsigned numbers) การแปลงหมายเลขทม

เครองหมาย (signed numbers ตวเลขทสามารถเปนบวกหรอลบ) มความซบซอนมากขนและสงส าคญทจะตอง

เขาใจเทคนคพนฐานส าหรบการแปลงกอนทจะด าเนนการตอดวยหมายเลขทมเครองหมาย

การแปลงระหวางระบบฐานสามารถท าไดโดยใชการลบซ าหรอวธการหารเหลอเศษ วธการลบนนยงยาก

และตองการความคนเคยกบตวยกก าลงของฐานทใช เนองจากเปนวธทใชงานงายกวาของสองวธ อยางไรกตามเรา

จะอธบายใหชดเจนกอน

ตวอยางเชนสมมตวาเราตองการแปลง 53810 เปนฐาน 8 เรารวา 83 = 512 คอก าลงสงสด 8 ทนอยกวา

538 ดงนนฐาน 8 ของเราจะเปนตวเลข 4 หลก (หนงส าหรบแตละก าลงของ radix: 0 ถง 3) เราสงเกตวา 512 เขา

ไปครงเดยวใน 538 และลบออกโดยมความแตกตาง 26 เรารวาก าลงตอไปของ 8, 82 = 64 นนใหญเกนไปทจะลบ

ไดดงนนเราจงสงเกตวา "ตวยด" เปนศนยและมองหาจ านวนครงท 81 = 8 หาร 26 เราเหนวามนไปสามครงและ

ลบ 24 เราเหลอ 2 ซงกคอ 2 x 80 ขนตอนเหลานจะแสดงในตวอยาง 2.2

ตวอยาง 2.2 แปลง 53810 เปนฐาน 8 โดยใชการลบ

วธการหารทเหลอเศษนนเรวและงายกวาวธการลบซ าๆ ใชแนวคดทวาฝายทตอเนองโดยฐานนนในความ

เปนจรงการลบอยางตอเนองโดยตวยกก าลงของฐาน สวนทเหลอทเราไดรบเมอเราหารดวยฐานทายเปนตวเลขของ

ผลซงอานจากลางขนบน วธการนจะแสดงในตวอยาง 2.3

ตวอยาง 2.3 แปลง 53810 เปนฐาน 8 โดยใชวธการหารสวนทเหลอ

วธนใชไดกบทกฐาน และเนองจากความเรยบงายของการค านวณ จงมประโยชนอยางยงในการแปลงจาก

เลขฐานสบเปนไบนาร ดงตวอยาง 2.4

ตวอยาง 2.4 แปลง 14710 เปนไบนาร

อานการหารเหลอเศษจากลางขนบนเราม: 14710 = 100100112

ตวเลขไบนารทม N บต สามารถแทนจ านวนเตมแบบไมมเครองหมายไดตงแต 0 ถง 2N - 1 ตวอยาง 4

บต สามารถแสดงคาทศนยม 0 ถง 15 ในขณะท 8 บตสามารถแสดงคา 0 ถง 255 ชวงของคาทสามารถแทนได

โดยจ านวนบตทก าหนดมความส าคญอยางยง เมอด าเนนการทางคณตศาสตรกบเลขฐานสอง ลองพจารณา

สถานการณทเลขฐานสองมความยาว 4 บต และตองการเพม 11112 (1510) ถง 11112 เรารวา 15 บวก 15 เปน

30 แต 30 ไมสามารถแทนไดโดยใชเพยง 4 บต นคอตวอยางของเงอนไขทเรยกวาโอเวอรโฟลว(overflow) ซง

เกดขนในการแทนเลขฐานสองแบบไมมเครองหมาย เมอผลลพธของการด าเนนการทางคณตศาสตรอยนอกชวง

ของความแมนย าทอนญาตส าหรบจ านวนบตทก าหนด รายละเอยดเพมเตมเกยวกบการลนจะพดกลาวอกครงใน

หวขอ 2.4

2.3.2 การแปลงเศษสวน

เศษสวนในระบบฐานใดๆ สามารถแปลงเปนไปเปนระบบฐานอนๆ โดยใชก าลงตดลบของฐาน จดใชแยก

จ านวนเตมของตวเลขออกจากเศษเหลอ ในระบบทศนยมจดฐานเรยกวาจดทศนยม

เศษสวนทมสตรงหรอสายของตวเลขแบบวนซ าของตวเลขทางดานขวาของจดฐานในฐานหนง อาจไมม

ล าดบการท าซ าของตวเลขในฐานอน ตวอยางเชน 2/3 เปนเศษสวนทศนยมซ า แตในระบบฐานสามทประกอบไป

ดวยสามสวนมนจะสนสดเปน 0.23 (2 x 3-1 = 2 x 1/3)

เราสามารถแปลงเศษสวนระหวางฐานตางๆ โดยใชวธทคลายคลงกบวธการลบซ า และวธหารเหลอเศษ

ส าหรบการแปลงจ านวนเตม ตวอยาง 2.5 แสดงวธทเราสามารถใชการลบซ า เพอแปลงตวเลขจากฐานสบเปนฐาน

5

ตวอยาง 2.5 แปลง 0.430410 เปนฐาน 5

อานจากบนลงลาง 0.430410 = 0.20345

เนองจากวธหารเหลอเศษท างานรวมกบตวยกก าลบบวกของเลขฐาน ส าหรบการแปลงจ านวนเตมมนจงม

เหตผลวาจะตองใชการคณ เพอแปลงเศษสวนเพราะพวกมนแสดงดวยตวยกก าลงลบของฐาน อยางไรกตามแทนท

จะมองหาเศษตามทเราท าดานบน กสามารถใชเฉพาะจ านวนเตมของผลหลงจากการคณดวยเลขฐาน ค าตอบได

จากการอานจากบนลงลางแทนลางขนบน ตวอยาง 2.6 แสดงกระบวนการ

ตวอยาง 2.6 แปลง 0.430410 เปนฐาน 5

อานจากบนลงลางจะได 0.430410 = 0.20345

ตวอยางนแสดงใหเหนกระบวนการหยดหลงจากด าเนนการผานไปไมกขนตอน บอยครงทสงตางๆ ไมได

ผลอยางเทาเทยมกนและจบลงดวยการใชเศษสวนวนซ า ระบบคอมพวเตอรสวนใหญใชอลกอรทมการปดเศษแบบ

พเศษ เพอใหระดบความแมนย าทคาดการณได อยางไรกตามเพอความชดเจนจะตด ค าตอบของเราเมอไดรบความ

แมนย าตามทแสดงในตวอยางท 2.7

ตวอยาง 2.7 แปลง 0.3437510 เปนไบนาร 4 บตทางดานขวาของจดไบนาร

อานจากบนลงลาง 0.3437510 = 0.01012 ซงมสต าแหนงหลงจดไบนาร

สงทไดอธบายไว สามารถใชในการแปลงตวเลขใดๆ ในฐานใดๆ ไปยงฐานอนๆ ไดโดยตรง เชนจากฐาน 4

เปนฐาน 3 (ดงในตวอยางท 2.8) อยางไรกตามในกรณนสวนใหญจะเรวกวาและแมนย ากวา เมอแปลงเปนฐาน 10

กอนแลวจงไปยงฐานทตองการ ขอยกเวนอยางหนงของกฎนคอ เมอท าการแปลงระหวางฐานทมตวยกก าลงสอง

ดงทจะไดแสดงใหเหนในหวขอถดไป

ตวอยาง 2.8 แปลง 31214 เปนฐาน 3

กอนอนใหแปลงเปนเลขฐานสบกอน:

แลวจงแปลงเปนเลขฐาน 3

2.3.3 การแปลงระหวาง Power-of-Two Radices

เลขไบนารมกถกแสดงเปนเลขฐานสบหก และในบางครงแสดงในฐานแปด เพอปรบปรงความสามารถใน

การอาน เนองจาก 16 = 24 กลมของ 4 บต (เรยกวา hextet) จะจดจ าไดงายวาเปนเลขฐานสบหก ในท านอง

เดยวกนกบ 8 = 23 กลม 3 บต (เรยกวา octet) สามารถแทนดวยเลขฐานแปดเพยงหนงตว ดวยการใช

ความสมพนธเหลาน เราสามารถแปลงตวเลขจากไบนารเปนฐานแปด หรอฐานสบหกไดดงน

ตวอยาง 2.9 แปลง 1100100111012 เปนฐานแปดและฐานสบหก

2.4 การแทนจ านวนเตมแบบมเครองหมาย

เราไดเหนวธการแปลงจ านวนเตมแบบไมมเครองหมายจากฐานหนงไปยงอก เลขทมเครองหมายตองมการ

แกไขปญหาเพมเตม เมอประกาศตวแปรจ านวนเตมในโปรแกรมภาษา การเขยนโปรแกรมจะจดสรรพนทเกบ

ขอมลทมเครองหมายดวยบตแรกของต าแหนงหนวยเกบขอมลโดยอตโนมต ตามแบบแผน 1 ในบตล าดบสงแทน

จ านวนลบ ทเกบขอมลอาจมขนาดเลกเพยง 8 บต หรอใหญกวาไบต หรอแทนดวยเวรดขนอยกบภาษาทเขยน

โปรแกรมและระบบคอมพวเตอร บตทเหลอ (หลงจากเครองหมายบต) จะถกใชเพอแทนตวเลข

วธการแสดงจ านวนนขนอยกบวธการทใช มสามวธทใชกนทวไป วธการทงายทสดคอ signed

magnitude ใชบตทเหลอเพอแสดงขนาดของจ านวน สวนอกสองวธใชแนวคดของการเตมเตม(complements)

ซงจะไดอธบายกนในหวขอตอไป

2.4.1 Signed Magnitude

ในหวขอน เราไดละความเปนไปไดของการแทนเลขฐานสองส าหรบจ านวนลบ เซตของจ านวนเตมบวก

และลบเรยกวา เซตจ านวนเตมแบบมเครองหมายหรอ signed integers ปญหาของการแทนจ านวนเตมทม

เครองหมายเปนคาไบนาร เปนสญญาณทเราควรเขารหสสญญาณจรงของตวเลขหรอไม? การแสดงขนาดแบบ

เครองหมายเปนวธการหนงในการแกปญหาน ตามชอของมนหมายถงหมายเลขทแทนขนาดมเครองหมายเปนบต

ซายสด (เรยกอกอยางวาบตล าดบสงหรอบตทส าคญทสด MSB: most significant bit) ในขณะทบตทเหลอแสดง

ขนาด (หรอคาสมบรณ) ของคาตวเลข ตวอยางเชน เวรด 8 บต -1 จะแสดงเปน 10000001 และ +1 เปน

00000001 ในระบบคอมพวเตอรทใชการแทน signed-magnitude และ 8 บตเพอเกบจ านวนเตม โดยสามารถใช

7 บต ส าหรบการแทนคาจรง ซงหมายความวาจ านวนเตมทมากทสดของเวรด 8 บต สามารถแทน 27- 1 หรอ

127 (0 ในบตล าดบสงตามดวย 1 อกเจดตว) จ านวนเตมทนอยทสดคอ 1 แปดตวหรอ -127 ดงนน N bits

สามารถแทน -(2(N-1) -1) ถง 2(N-1) – 1

คอมพวเตอรสามารถค านวณคณตศาสตรทเปนจ านวนเตมทแทนดวยเครองหมาย การค านวณทาง

คณตศาสตรแบบ Signed-magnitude ใชวธการเดยวกบทมนษยใชดนสอและกระดาษค านวณ แตอาจท าใหเกด

ความสบสนได ใหพจารณาตวอยางกฎส าหรบการเพม:

(1) หากเครองหมายเหมอนกนใหเพมขนาดและใชเครองหมายเดยวกนนนส าหรบผลลพธ

(2) หากสญญาณแตกตางกนตองพจารณาวาตวถกด าเนนการใดมขนาดใหญกวา เครองหมายของผลลพธ

นนเหมอนกบเครองหมายของโอเปอแรนดทมขนาดใหญกวา และตองไดขนาดโดยการลบ (ไมเพม) คาทเลกกวา

จากอนทใหญกวา

หากคณพจารณากฎเหลานอยางรอบคอบ นเปนวธทใชส าหรบการค านวณทางคณตศาสตรดวยมอ

เราจดเรยงตวถกด าเนนการดวยวธการบางอยาง ขนอยกบเครองหมาย ด าเนนการค านวณโดยไมค านงถง

เครองหมาย แลวคอยพจารณาใสเครองหมายใหถกตองตามความเหมาะสม เมอการค านวณเสรจสมบรณ เมอ

สรางแบบจ าลองความคดนดวยเวรด 8 บต จะตองระมดระวงทจะรวมเพยง 7 บต ขนาดของค าตอบโดยละการ

กระท าใดๆ ทเกดขนแลวมากกวาบตทมล าดบสง

ตวอยาง 2.10 บวก 010011112 กบ 001000112 โดยใชเลขจ านวนเตมแบบมเครองหมาย

การค านวณทางคณตศาสตรนน เหมอนกบการบวกเลขฐานสบ รวมถงการด าเนนการจนกระทงเราไดบตท

เจดจากดานขวา หากมการทดเขามาทต าแหนงนจะเกดสภาพลน และการทดถกยกเลก สงผลใหผลรวมไมถกตอง

แตตวอยางนไมมการลน

เราพบวา 010011112 + 001000112 = 011100102 ในการแทนแบบ signed-magnitude

บตเครองหมายจะถกแยกออก เนองจากมความเกยวของเฉพาะ หลงจากการเตมเตมเทานน ในกรณนเรา

มผลบวกของสองจ านวนบวกซงเปนบวกลน (และท าใหเกดขอผดพลาด) จ านวนทมเครองหมายเกดขนเมอ

เครองหมายของผลลพธไมถกตอง

signed magnitude มบตเครองหมายใชส าหรบก าหนดวาคานนเปนบวกหรอลบ ดงนนจงไมสามารถ

"ด าเนนการ" ได หากมการทดออกจากบตทเจด ผลลพธกจะถกตดทอนเปนบตทเจดลน โดยใหผลรวมไมถกตอง

(ตวอยาง 2.11 แสดงใหเหนถงสภาพการลนน) โปรแกรมเมอรทชาญฉลาดหลกเลยงขอผดพลาด "ลานดอลลาร"

โดยการตรวจสอบเงอนไขการลน เมอใดกตามทมความเปนไปไดนอยทสดทพวกเขาอาจเกดขนได หากไมทงบตลน

ท าใหผลลพธทผดมากยงขน จากการรวมของตวเลขบวกสองตวทเปนคาลบ (ลองนกภาพวาจะเกดอะไรขนหาก

ขนตอนถดไปในโปรแกรมคอการใชสแควรรทหรอบนทกของผลลพธนน!)

ตวอยาง 2.11 บวก 010011112 กบ 011000112 โดยใช signed-magnitude

เราไดผลลพธทผดพลาดจาก 79 + 99 = 50

เชนเดยวกบการบวก การลบ signed-magnitude จะด าเนนการในลกษณะทคลายกบเลขฐานสบ โดยใช

ดนสอและกระดาษ ซงบางครงกจ าเปนตองยมจากตวเลขใน minuend

ตวอยาง 2.12 ลบ 010011112 จาก 011000112 โดยใชเลขคณต signed-magnitude

พบวา 011000112 - 010011112 = 000101002 ในการแทน signed-magnitude

ตวอยาง 2.13 ลบ 011000112 (99) จาก 010011112 (79) โดยใชเลขคณต signed-magnitude

จากการตรวจสอบเราจะเหนวา subtrahend 01100011 นนมขนาดมากกวา minuend ท 01001111

ดวยผลลพธทไดในตวอยางท 2.12 เรารวาความแตกตางของตวเลขสองตวนคอ 00101002 เพราะ subtrahend

นนมากกวา minuend สงทตองท าคอเปลยนสญลกษณของความแตกตาง ดงนนเราจงพบวา 010011112 -

011000112 = 100101002 ส าหรบการแทน signed-magnitude

เปนททราบกนแลววาการลบนนเหมอนกบ "การบวกทตรงกนขาม" ซงเทากบลบคาทเราตองการลบแลว

บวกแทน (ซงมกจะงายกวาการยมทงหมดทจ าเปนส าหรบการลบโดยเฉพาะอยางยง ในการจดการกบเลขฐานสอง)

ดงนนเราตองดตวอยางทเกยวของทงบวกและจ านวนลบ จ ากฎส าหรบการบวก: (1) หากเครองหมายเหมอนกนให

เพมขนาดและใชเครองหมายเดยวกนนนส าหรบผลลพธ (2) หากสญญาณแตกตางกนคณตองพจารณาวาตวถก

ด าเนนการใดมขนาดมากกวา เครองหมายของผลลพธนนเหมอนกบเครองหมายของตวถกด าเนนการ ทมมากขน

และขนาดจะตองไดรบโดยการลบ (ไมเพม) อนทเลกกวาจากตวทใหญกวา

ตวอยาง 2.14 บวก 100100112 (-19) ถง 000011012 (+13) โดยใชเลขคณต signed-magnitude

ตวเลขแรก (augend) เปนคาลบ เนองจากบตเครองหมายถกตงคาเปน 1 จ านวนทสอง (ตวบวก) เปนคา

บวก สงทถกขอใหท ากคอการลบ อนดบแรกเราพจารณาวาตวเลขสองตวใดมขนาดใหญกวาและใชตวเลขนน

ส าหรบการบวก เครองหมายของมนจะเปนเครองหมายของผลลพธ

ดวยการรวมบตเครองหมายจะเหนวา 100100112 - 000011012 = 100001102 ในการ signed-

magnitude

ตวอยาง 2.15 ลบ 100110002 (-24) จาก 101010112 (-43) โดยใชเลขคณต signed-magnitude

เราสามารถแปลงการลบเปนการบวกไดโดยการลบ -24 ซงได 24 แลวสามารถบวก -43 ท าใหมปญหา

ใหมท -43 +24 อยางไรกตามจากกฎการบวกขางตน เพราะขณะนเครองหมายตางกน ตองลบขนาดทเลกกวาจาก

ขนาดทใหญกวา (หรอลบ 24 จาก 43) และท าใหผลลพธเปนลบ (เพราะ 43 มขนาดใหญกวา 24)

จ าไววาไมเกยวของกบเครองหมาย จนกวาจะท าการลบ เรารวาค าตอบแลววาตองเปนลบ ดงนนจงจบ

ดวย 101010112 - 100110002 = 100100112 ในการแทน signed-magnitude

ในตวอยางกอนหนานอาจสงเกตเหนวา มค าถามมากมายทตองถามตวเอง: จ านวนใดทใหญกวา ฉนจะลบ

จ านวนลบหรอไม ฉนตองยมจาก minuend กครง? คอมพวเตอรทไดรบการออกแบบทางวศวกรรม เพอท าการ

ค านวณในลกษณะนจะตองท าการตดสนใจหลายๆ อยาง (แมวาจะเรวกวามาก) ตรรกะมความซบซอนมากขนโดย

ขอเทจจรงทวาขนาดทเครองหมายมสองแนวทางส าหรบ 0, 10000000 และ 00000000 (ในทางคณตศาสตร ไม

ควรเกดขน!) วธทงายกวาส าหรบการแทนตวเลขทมเครองหมายโดยหาวธทงายขนและตนทนนอยลง วงจรมราคา

แพง วธการทงายกวานขนอยกบระบบคอมพลเมนตเลขฐาน

2.4.2 Complement Systems

ในทฤษฎจ านวนเปนททราบกนมาหลายรอยปแลววา เลขฐานสบทศนยมหนงตวสามารถน ามาลบออกจาก

อกตวหนง โดยการบวกผลตางของตวลบจากเกาทมจ านวนหลกเทาตวตงและบวกกลบเขาไปดวยตวทด สงน

เรยกวาการใชสวนเตมเตมของเกาหรอคอมพลเมนต (9-Complement) ของตวลบ หรอโดยทวไปเปนการหาคอม

พลเมนตของฐาน สมมตวาเราตองการหา 167 - 52 โดยหาความแตกตางของตวลบ 52 จาก 999 ซงเทากบ 947

ดงนนในเลขเกาสวนประกอบเราม 167 - 52 = 167 + 947 = 1114 ตวทดจากคอลมนของหลกรอยจะถกบวกเขา

ไปทหลกนนคอ 167 - 52 = 1_14+1 = 115 วธนมกเรยกวา “Casting out 9s” เมอถกขยายไปยงการ

ด าเนนการแบบไบนาร เพอลดความซบซอนของการค านวณทางคณตศาสตร ขอไดเปรยบของระบบคอมพลเมนต

ทมใหมากกวาวธ signed magnitude คอไมจ าเปนตองประมวลบตเครองหมาย แตเรายงสามารถตรวจสอบ

เครองหมายของตวเลขไดอยางงายดายโดยดทบตล าดบสง

อกวธหนงใหลองการนกภาพระบบประกอบ หรอจนตนาการถงตววดระยะทางทใชกบจกรยาน ซงตาง

จากรถยนต เมอถอยหลงจกรยานระยะทางจะยอนกลบดวยเชนกน สมมตวาเครองวดระยะทางมตวเลขสามหลก

หากเราเรมตนทศนยและสนสดดวย 700 เราไมสามารถแนใจไดวาจกรยานเดนไปขางหนา 700 ไมลหรอถอยหลง

1000-300=700 ไมลกนแน วธทงายทสดส าหรบกรณนคอการแบงครงเพอตดพนทจ านวนครงโดยใช 001-500

ส าหรบไมลบวกและ 501-999 ส าหรบไมลลบ เรามประสทธภาพลดระยะทางทเครองวดระยะทางของเราสามารถ

วดได แตตอนนถาอาน 997 เรารวาจกรยานถอยหลง 3 ไมลแทนทจะขไปขางหนา 997 ไมล หมายเลข 501-999

แสดงถงการเตมเตมของ Radix (วธทสองของสองวธทแนะน าดานลาง) ของหมายเลข 001-500 และใชเพอแสดง

ระยะหางเชงลบ

One's Complement

จากทกลาวมาขางตน ในเรองการคอมพลเมนตเลขฐานสบ ทสามารถค านวณไดจากการลบตวลบ

(subtrahend) ออกจากฐานลบหนงซงเทากบ 9 ในฐานสบ กลาวโดยทวไปเมอก าหนดตวเลข N ใดๆทอยในฐาน r

ม d หลก คอมพลเมนตฐานของ N จะถกก าหนดไดโดย (rd - 1) - N ส าหรบเลขฐานสบ, r = 10 และ radix ท

ลดลงคอ 10 -1 = 9 ตวอยางคอมพลเมนตของเกาจากคา 2468 คอ 9999 - 2468 = 7531 ส าหรบการด าเนนการ

ทเทยบเทาในไบนารเราลบจากฐานทนอยกวาหนง (2) ซงกคอ 1 ตวอยางเชนสวนประกอบหนงของ 01012 คอ

11112 - 0101 = 1,010 แมวาสามารถยมและน ามาลบกนไดดงทกลาวไวขางตน แตจากการทดลองบางอยางจะ

ท าใหเชอวาการคอมพลเมนตเลขฐานสองไมมอะไรมากไปกวาการเปลยน 1s ทงหมดเปน 0s และในทางกลบกน

การกลบบต(Bit-flipping) แบบนงายมากทจะน าไปใชกบฮารดแวรคอมพวเตอร

เปนสงส าคญทจะตองทราบ ณ จดนวา ถงแมจะสามารถหาสวนเตมเตมเกาของเลขฐานสบตวใดๆ หรอ

One’s complement ของเลขฐานสองใดๆ เรากสนใจทจะใชสญกรณคอมพลเมนตเพอแทนจ านวนลบ เรารวา

การลบ เชน 10 - 7 นนอาจคดวาเปน "การบวกกบคาตรงกนขาม" นนคอ 10 + (-7) สญกรณ

Complementation ชวยใหท าการลบไดงายขน โดยการเปลยนใหเปนการบวก แตมนกท าใหเรามวธในการแทน

จ านวนลบ เนองจากเราไมตองการใชบตพเศษเพอแสดงเครองหมาย (ดงทท าในการแทน signed-magnitude)

เราจ าเปนตองจ าไววาหากตวเลขเปนลบเราควรแปลงเปนคอมพลเมนต ผลลพธควรม 1 ในต าแหนงบตซายสดเพอ

ระบวาจ านวนลบ

แมวา one's complement ของตวเลขจะเปนคาทางเทคนคทไดจากการลบตวเลขนนออกจากก าลง

สงสดของสอง เรามกจะอางถงคอมพวเตอรทใช one's complement ส าหรบตวเลขลบเปนระบบประกอบหนง

หรอเปนคอมพวเตอรทใชเลขคณต one's complement สงนอาจท าใหเขาใจผดได เนองจากตวเลขบวกไม

จ าเปนตองคอมพลเมนต เราคอมพลเมนตจ านวนลบเทานนเพอใหเราสามารถจดรปแบบทคอมพวเตอรจะเขาใจได

ตวอยาง 2.16 แสดงแนวคดเหลาน

ตวอยาง 2.16 ใหแสดงการบวก 2310 และ -910 ในโหมดไบนาร 8 บต โดยสมมตวาคอมพวเตอรใชการ

แทนแบบ one's complement

จะเหนวาแตกตาง signed magnitude การบวกในระบบ one's complement ไมจ าเปนตองค านงถง

บตเครองหมายแยกจากบตอนๆ เครองหมายจะจดการตวเองได เปรยบเทยบตวอยาง 2.17 กบตวอยางท 2.10

ตวอยาง 2.17 ใหบวก 010011112 กบ 001000112 โดยใช one's complement

สมมตวาเราตองการลบ 9 จาก 23 เพอท าการลบแบบ one's complement จะเรมจากตองแปลงตวลบ

กอน (9) ใหอยในรป one's complement แลวน าไปบวกกบตวตง (23); ถงตอนนกสามารถบวก -9 กบ 23 บตท

มล าดบสงจะมการทดเปน 1 หรอ 0 กจะถกบวกเขากบบตในล าดบต าสด (สงนเรยกวา end carry-around และ

ผลลพธจากการใชคอมพลเมนตฐาน)

ตวอยาง 2.18 ใหบวก 2310 กบ -910 โดยใช one's complement

ตวอยาง 2.19 ใหบวก 910 กบ -2310 โดยใช one's complement

จะทราบไดอยางไรวา 111100012 คอ -1410 ในทนตองใช one's complement กบ 111100012 (จ าได

วามนตองเปนลบเพราะบตซายสดเปนลบ) เมอคอมพลเมนตของ 111100012 คอ 000011102 ซงเทากบ 14

ขอดอยหลก one's complement คอยงตองมการแทนไดสองแบบส าหรบคา 0 นนคอ 00000000 และ

11111111 ดวยเหตนและอนๆ วศวกรคอมพวเตอรเลกใช one's complement นานมาแลว โดยไปใชการแทน

แบบ two's complement

Two's Complement

Two's Complement เปนตวอยางของคอมพลเมนตฐาน เมอก าหนดตวเลข N ในฐาน r ทม d หลก เลข

ฐานคอมพลเมนตของ N ถกก าหนดจาก rd - N ส าหรบ N ≠ 0 และ 0 ส าหรบ N = 0 คอมพลเมนตฐาน มกจะใช

งานไดงายกวาคอมพลเมนตฐานลบหนงอยาง one's Complement จากตวอยางของเครองวดระยะทางจกรยาน

คอมพลเมนตฐานสบ เมอเดนหนา 2 ไมลคอ 103 - 2 = 998 ซงเราไดตกลงกนแลวบงชวามระยะลบ (ยอนกลบ)

ในท านองเดยวกนใน Two's Complement ของ 4-bit คอ 00112 คอ 24 - 00112 = 100002 - 00112 = 11012

เมอตรวจสอบอยางละเอยดกจะพบวา Two's Complement นนไมมอะไรมากไปกวาคอมพลเมนตแลว

บวกเพมดวย 1 เมอตองการคนหาคอมพลเมนตเลขฐานสองเพยงแคกลบบตและบวก 1 สงนจะท าใหการบวกและ

การลบงายขนเชนกน เนองจากตวลบ (จ านวนทถกคอมพลเมนตแลวบวกเพม) แตไมตองม ท end carry-around

ใหตองกงวล เพยงแคยกเลกการด าเนนการใดๆ ทเกยวของกบบตล าดบสง เชนเดยวกบ one's complement แต

Two's Complement จะใชคอมพลเมนตของจ านวนใดๆ ในขณะทคอมพวเตอรทใชการแทนแบบนเพอแสดง

ตวเลขตดลบ กจะเรยกวา ระบบ Two's Complement หรอคอมพวเตอรทใชเลขคณตแบบ Two's

Complement ส าหรบการแทนจ านวนทเปนบวกกเหมอนกบการแทนแบบอนๆ ทตางกนกคอจ านวนทตดลบ

เทานน ตวอยาง 2.20 แสดงแนวคดเหลาน

ตวอยาง 2.20 ใหแสดงการแทน 2310, -2310 และ -910 ดวยไบนาร 8 บตโดยสมมตวาคอมพวเตอรใช

Two's Complement

เนองจากการแทนตวเลขบวกนนเหมอนกนกบ one's complement และ signed-magnitude

กระบวนการของการบวกเลขฐานสองททงสองจ านวนเปนจะเหมอนกน เปรยบเทยบตวอยาง 2.21 กบตวอยาง

2.17 และตวอยาง 2.10

ตวอยาง 2.21 บวก 010011112 กบ 001000112 โดยใช Two's complement

เมอตองแปลงจากไบนารไปเปนเลขฐานสบ จ านวนทเปนบวกนนงาย เชนในการแปลง two's

complement ของ 000101112 ใหเปนฐานสบ เพยงแปลงเลขฐานสองนเปนเลขฐานสบเพอใหได 23 อยางไรก

ตามการแปลงจ านวนเลขลบแบบ two's complement จะตองใชกระบวนการยอนกลบทคลายกบการแปลงจาก

ฐานสบเปนเลขฐานสอง เมอ two's complement ของ 111101112 และตองการรวามคาเทาไรในฐานสบ เราร

วานเปนจ านวนลบ แตตองจ าไววาเปนการแทนแบบ two's complement จะตองกลบบตกอนแลวจงบวก 1 (หา

สวนเตมเตมแลวบวก 1) ผลลพธคอ: 000010002 + 1 = 000010012 นเทยบเทากบ 9 ในฐานสบ อยางไรกตาม

หมายเลขเดมทเราเรมตนมคาเปนลบ ดงนนจงลงทายดวย -9 เปนทศนยมเทยบเทา 111101112

สองตวอยางตอไปนแสดงวธการบวก (และการลบดวยเหตนเนองจากเราลบตวเลขดวยการเพมตรงกน

ขาม) โดยใช two's complement

ตวอยาง 2.22 บวก 910 กบ -2310 โดยใช two's complement

ใหลองท าเปนแบบฝกหด โดยใหตรวจสอบวา 111100102 นน -1410 โดย two's complement

ตวอยาง 2.23 ใหคนหาผลรวมของ 2310 และ -910 ในโหมดไบนารโดยใช two's complement

ส าหรบการแทนดวย two's complement การบวกจ านวนทตดลบสองตว จะไดผลลพธเปนจ านวนลบ

ตามทเราคาดหวง

ตวอยาง 2.24 คนหาผลรวมของ 111010012 (-23) และ 111101112 (-9) โดยใช two's complement

ใหสงเกตวาการละทงตวทดในตวอยาง 2.23 และ 2.24 นน ไมไดท าใหเกดผลลพธผดพลาด การเกดโอ

เวอรโฟลวขนหากมการบวกสองจ านวนทไมตดลบ ผลลพธทไดเปนลบ หรอถาบวกสองจ านวนทมากกวาศนยและ

ผลลพธนนเปนบวก เปนไปไมไดทจะมการลน การแทนแบบ two's complement ถาตวโอเพอรแรนดตวหนงเปน

บวกและอกตวเปนลบ กจะถกรวมรวมเขาดวยกน

วงจรคอมพวเตอรอยางงายสามารถตรวจจบการลนโดยใชกฎทงายตอการจดจ า สงเกตเหนไดทงใน

ตวอยาง 2.23 และ 2.24 วาการทดเขาไปในบตเครองหมาย (1 ซงถกทดมาจากต าแหนงบตกอนหนา เขามาใน

ต าแหนงของบตเครองหมาย) เชนเดยวกบททดออกไปจากบตเครองหมาย (คา 1 จะถกทง) เมอการทดดวยคาท

เหมอนกนกจะไมเกดการลน แตถาแตกตางกนตวบงชโอเวอรโฟลวจะถกตงคาในหนวยค านวณทางคณตศาสตร

เพอระบผลลพธทไมถกตอง

กฎงายๆ ส าหรบการตรวจสอบการลนในบตเครองหมาย: ถามการทดเขาสบตเครองหมายเทากบททด

ออกจากบตเครองหมายจะไมมการลนเกดขน หากมการทดเขาไปในบตเครองหมายตางจากททดออกจากบต

เครองหมายจะมการลนเกดขน (และท าใหเกดขอผดพลาด)

สวนทยากคอโปรแกรมเมอร (หรอคอมไพเลอร) ตองตรวจสอบสภาพลนอยางสม าเสมอ ตวอยางท 2.25

บงชวามการลนเพราะการทดเขาสบตเครองหมาย (มการทด 1 เขา) ซงไมเทากบการทดออก (มการทด 0 ออก)

ตวอยาง 2.25 ใหหาผลรวมของ 12610 และ 810 เปนเลขฐานสองโดยใช two's complement

1 ถกทดเขาไปทบตซายสด แตมการทด 0 ออกจากบตเครองหมาย เนองจากการทดน มคาไมเทากนจง

เกดการลน (เราสามารถสงเกตเหนไดอยางงาย จากกรณทโอเพอแรนดทงสองเปนบวก แตผลลพธเปนลบ) จะ

กลาวถงเรองนอกครงในหวขอ 2.4.6

Two's complement เปนการแทนแบบคดเครองหมายทไดรบความนยมมากทสด อลกอรธมส าหรบการ

บวกและการลบนนสามารถด าเนนการไดงาย สามารถแทนไดดทสดส าหรบ 0 (ทงหมด 0 บต) และการแปลงกลบ

ในตวเอง และสามารถขยายออกไปเปนบตจ านวนมากขน มขอเสยคอความไมสมดลของพสย N บต เชน N=4 บต

One’s complement และ Signed-magnitude สามารถแทนคา - 7 ถง +7 อยางไรกตามการใช Two's

complement นนเราสามารถแทนคาได -8 ถง +7 ซงมกจะสบสนกบการแทนแบบคอมพลเมนต เหตผลวาท าไม

+7 จงเปนจ านวนมากทสดทสามารถใชแทนการคอมพลเมนต 4 บต การแทนแบบ Two's complement ตองจ า

ไววาบตแรกตองเปน 0 ถาบตทเหลอเปน 1s ทงหมด (ท าใหมคามากทสดเทาทจะเปนไปได) 01112 ซงกคอ 7

ในทางตรงกนขาม คาทนอยทสดเปนคาลบควรมคาเทากบ 11112 อนทจรง 11112 มคาเทกบ -1 (0000+1=-1)

แลว -8 แทนไดอยางไรใน Two's complement ทใช 4 บต? มนถกแทนดวย 10002 นเปนจ านวนลบ ถากลบบต

(0111+1=-8)

การคณและการหารจ านวนเตม

หากไมมการใชอลกอรทมทซบซอน การคณและการหาร จะตองวนซ าหลายรอบเพอค านวณผลลพธ ใน

ทนจะพดถงวธทตรงไปตรงมาทสดในการด าเนนการเหลาน ในระบบจรงฮารดแวรเฉพาะถกใชเพอเพม

ประสทธภาพ บางครงด าเนนการบางสวนของการค านวณแบบขนาน ผอานทอยากรอยากเหนจะตองตรวจสอบ

วธการขนสงเหลานไดจากเอกสารการอางองทอางถงในตอนทายของบทน

อลกอรทมการคณทงายทสดทใชโดยคอมพวเตอรนน คลายกบวธการแบบดนสอและกระดาษทมนษยใช

ตารางการคณทสมบรณ ส าหรบเลขฐานสองนนไมสามารถท าใหงายขนได: ศนยคณจ านวนใดกไดศนย และหนง

คณตวเลขใดๆ กคอตวเลขนน

เพอแสดงการคณคอมพวเตอรอยางงาย จะเรมตนดวยการเขยนตวตงหรอตวถกคณกบตวคณไปยงพนท

เกบขอมลสองแหงแยกกน เรายงตองการพนทเกบขอมลทสามส าหรบผลคณ เรมจากบตล าดบต า ตวชจะถกตงคา

เปนตวเลขแตละหลกของตวคณ ส าหรบแตละหลกของตวคณ จะถกเลอนไปทางซายหนงบตของตวตง เมอตวคณ

คอ 1 กจะยกตวตงมาวางทต าแหนงของมนเชนเดยวกบการคณฐานสบ เพอใหหาผลรวมสะสมของการคณ

เนองจากจะตองเลอนตวคณไปทละบต การคณแตละตวคณตองใชพนทการท างานของตวตงหรอตวคณเพมขนเปน

สองเทา

มวธการงายๆสองวธในการหารไบนาร: เราสามารถลบตวตงซ าจากตวหารได หรอเราสามารถใชวธการ

ลองผดลองถกแบบเดยวกนของการหารยาวทสอนในโรงเรยนประถมศกษา เชนเดยวกบการคณ วธทม

ประสทธภาพทสดทใชส าหรบการหารไบนาร แตอยนอกเหนอขอบเขตของบทน และสามารถอานเพมเตมไดใน

เอกสารอางองในตอนทายของบทน

เมอไมค านงถงประสทธภาพของอลกอรธม การหารคอการด าเนนการทสามารถท าใหคอมพวเตอรหยด

การท างานไดเสมอ นเปนกรณเฉพาะเมอพยายามหารดวยศนย หรอเมอโอเพอแรนดมขนาดทแตกตางกนมาก เมอ

ตวหารมขนาดเลกกวาตวตง เราจะไดรบเงอนไขทเรยกวาการหารอนเดอรโฟลว(divide underflow) ซง

คอมพวเตอรมองวาเทยบเทากบการหารดวยศนยซงเปนไปไมได

คอมพวเตอรมความแตกตางระหวางการหารจ านวนเตมและการหารทศนยม การหารจ านวนเตมค าตอบ

มาในสองสวนคอผลหาร(quotient) และเศษเหลอ(remainder) การหารทศนยมสงผลใหตวเลขทแสดงเปน

เศษสวนไบนาร การหารทงสองประเภทมความแตกตางกน จงมการออกแบบวงจรพเศษส าหรบแตละประเภท การ

ค านวณเลขทศนยมจะด าเนนการในวงจรเฉพาะทเรยกวา floating-point units หรอ FPU

2.4.4 จ านวน Unsigned เทยบกบ Signed

เราแนะน าการสนทนาของเราเกยวกบเลขจ านวนเตมไบนารทมตวเลขทไมไดลงนาม หมายเลขทไมไดลง

ชอใชเพอแสดงคาทรบประกนวาจะไมเปนคาลบ ตวอยางทดของหมายเลขทไมไดลงชอคอทอยหนวยความจ า หาก

คาเลขฐานสอง 4 บต 1101 ไมไดลงนามแสดงวาเปนเลขฐานสบ 13 แตเปนหมายเลขสวนเตมของสองทลงนาม

แลวจะหมายถง -3 หมายเลขทเซนชอใชเพอแสดงขอมลทอาจเปนบวกหรอลบ

โปรแกรมเมอรคอมพวเตอรจะตองสามารถจดการทงตวเลขทลงนามและไมไดลงนาม ในการท าเชนนน

โปรแกรมเมอรจะตองระบคาตวเลขกอนวาเปนตวเลขทลงนามหรอไมไดลงนาม สงนท าไดโดยการประกาศคาเปน

ประเภทเฉพาะ ตวอยางเชนภาษาการเขยนโปรแกรม C ม int และไมไดลงนาม int เปนประเภททเปนไปได

ส าหรบตวแปรจ านวนเตมก าหนดจ านวนเตมลงนามและไมไดลงนามตามล าดบ นอกเหนอจากการประกาศ

ประเภททแตกตางกนหลายภาษามการด าเนนการทางคณตศาสตรทแตกตางกนส าหรบใชกบตวเลขทลงนามและ

ไมไดลงนาม ภาษาอาจมค าแนะน าการลบหนงค าส าหรบหมายเลขทเซนชอและค าแนะน าการลบแบบอนส าหรบ

หมายเลขทไมไดลงชอ ในภาษาแอสเซมบลสวนใหญโปรแกรมเมอรสามารถเลอกจากโอเปอเรเตอรการ

เปรยบเทยบทลงนามแลวหรอโอเปอเรเตอรการเปรยบเทยบทไมไดลงชอ

เปนทนาสนใจทจะเปรยบเทยบสงทเกดขนกบหมายเลขทไมไดลงชอและเซนชอเมอเราพยายามจดเกบ

คาทมขนาดใหญเกนไปส าหรบจ านวนบตทระบ ตวเลขทไมไดลงชอเพยงแคลอมรอบและเรมตนใหมท 0

ตวอยางเชนถาเราใชเลขฐานสองแบบไมไดลงนาม 4 บตและเราเพม 1 ถง 1111 เราไดรบ 0000 ค าสง "กลบไปท

0" นคนเคย - บางทคณอาจเคยเหน รถยนตระยะทางสงทฐานเครองวดระยะทางหอกลบมาอยท 0 อยางไรกตาม

ตวเลขทลงนามนนอทศพนทครงหนงของพวกเขาใหเปนจ านวนบวกและอกครงหนงเปนตวเลขตดลบ ถาเราบวก 1

เขากบเลขเสรมบวกทใหญทสดของ 4 บตสอง 0111 (+7) เราจะได 1,000 (-8) การขนบรรทดใหมดวยการ

เปลยนแปลงเครองหมายทไมคาดคดนเปนปญหาส าหรบโปรแกรมเมอรทไมมประสบการณท าใหเวลาดบกหลาย

ชวโมง โปรแกรมเมอรทดเขาใจเงอนไขนและวางแผนทเหมาะสมในการจดการกบสถานการณกอนทจะเกดขน

2.5 การแทนจดทศนยม

ในการออกแบบคอมพวเตอร มการแทนคาจ านวนเตมใดๆ ทเพงศกษาไป ขนตอนตอไปคอการตดสนใจ

ขนาดของค าหรอเวรดของระบบ หากตองการใหระบบมราคาไมแพงจะเลอกเวรดโขนาดเลก 16 บต อนญาตใหบต

มบตเครองหมาย จ านวนเตมทมากทสดทระบบนเกบไดคอ 32,767 แตถาตองการใหเกบจ านวนเตมไดมากกวานน

กลองท าใหขนาดเวรดใหญขนเปน 32 บต ตอนนเวรดของเรามขนาดใหญพอส าหรบทกสงททกคนตองการนบ แต

ถาตองการแทนตวเลขเศษสวนทศนยม กตองมาดวธการแทนทศนยมกน

วธทงายทสดส าหรบปญหานคอการรกษาระบบ 16 บตไวและพดวา "เฮเราก าลงสรางระบบราคาถกทนถา

คณตองการท าสงตางๆ ดวยตวคณเองจงเปนโปรแกรมเมอรทด" แมวาจะฟงดโออวดในบรบทของเทคโนโลยใน

ปจจบน แตมนกเปนความจรงในยคแรกๆ ของคอมพวเตอรแตละรน ไมมสงใดทตองแทนดวยทศนยมในเมนเฟรม

หรอไมโครคอมพวเตอรเครองแรก หลายปทผานมาการเขยนโปรแกรมอยางชาญฉลาดท าใหระบบจ านวนเตม

เหลานท าหนาทเสมอนวาเปนระบบจดทศนยม

หากคนเคยกบสญกรณทางวทยาศาสตร อาจก าลงคดวาคณสามารถจดการกบการด าเนนการเกยวกบ

floating-point ไดอยางไร - คณจะมการจ าลอง floating-point ในระบบจ านวนเตมไดอยางไร ในสญกรณทาง

วทยาศาสตรตวเลขจะถกแสดงเปนสองสวน: สวนทเปนเศษสวนและสวนของตวยกก าลง ซงสวนเศษควรจะ

ยกระดบเพอใหสามารถเกบคาทตองการได ดงนนเพอแสดง 32,767 ในสญกรณทางวทยาศาสตร เราสามารถเขยน

3.2767 x 104 สญกรณวทยาศาสตรหรอ Scientific number ท าใหการค านวณดวยดนสอและกระดาษงายขน ซง

เกยวของกบตวเลขทมขนาดใหญมากหรอนอยมาก นอกจากนยงเปนพนฐานส าหรบการค านวณเลขทศนยมใน

คอมพวเตอรดจทลในปจจบน

2.5.1 โมเดลพนฐาน

ในคอมพวเตอรดจทล ตวเลขจดทศนยมประกอบดวยสามสวน: บตเครองหมาย สวนเลขชก าลง (แทนเลข

ชก าลงดวยก าลง 2) และสวนทเปนเศษสวน (ซงมาดค าศพททเหมาะสม) ค าวา mantissa เปนทยอมรบอยาง

กวางขวางเมออางถงสวนทเปนเศษสวน อยางไรกตามหลายคนใชขอยกเวนของ mantissa เพราะมนยงหมายถง

เศษสวนของลอการทม ซงไมเหมอนกบสวนทเปนเศษสวนของจ านวนจดทศนยม สถาบนวศวกรไฟฟาและ

อเลกทรอนกส (IEEE: Institute of Electrical and Electronics Engineers) แนะน าค าส าคญและอางถงสวนท

เปนเศษสวนของจ านวนจดทศนยมรวมกบจดฐานสองโดยนย นยแรก (ซงเราจะกลาวถงในตอนทายของสวนน) นา

เศราทขอตกลง mantissa และซกนฟแคนด(significand) กลายเปนสงทใชแทนกนได เมออางถงสวนทเปน

เศษสวนของจ านวนจดทศนยมแมวาจะไมเทยบเทาในทางเทคนคกตาม ในทนจะอางถงสวนทเปนเศษสวนโดยไม

ค านงวาจะรวมถงนยแรก ตามท IEEE ตงใจไวหรอไม (ดหวขอ 2.5.4)

จ านวนบตทใชส าหรบเลขชก าลงและซกนแคนดนน ขนอยกบวาเราตองการปรบใหเหมาะสมส าหรบชวง

(บตเพมเตมในเลขชก าลง) หรอความแมนย า (เพมบตเตมในซกนแคนดแทน) (จะพดถงชวงและความแมนย า

เพมเตมในหวขอ 2.5.7.) ส าหรบเศษเหลอ(remainder) ในทนจะใชโมเดล 14 บต ทมเลขยกก าลง 5 บต 8 บต

แทนซกนฟแคนด และบตเครองหมายอกหนงบต (ดรปท 2.1) แบบฟอรมทวไปมอธบายไวในสวน 2.5.2

รปท 2.1 แบบจ าลองทใหแทนเลขทศนยม

สมมตวาเราตองการเกบเลขทศนยมทมคาเทากบ 17 ไวในแบบจ าลอง เมอ 17 = 17.0x100 = 1.7x101 =

0.17x102 เมอเทยบกบไบนาร 1710 = 100012 X 20 = 1000.12 X 21 = 100.012 X 22 = 10.0012 X 23 =

1.00012 X 24 = 0.100012 x 25 ถาใชแบบฟอรมสดทายเศษสวนของเราจะเปน 10001000 และเลขชก าลงของ

เราจะ เปน 00101 ดงแสดงทน:

การใชแบบฟอรมน เราสามารถเกบจ านวนความส าคญไดมากกวาการแทนจดคงท 14 บต (ซงใชจ านวน 14

หลกไบนาร รวมทงไบนารหรอฐาน) หากเราตองการแทน 65536 = 0.12 x 217 ในแบบจ าลองทศนยม 14 บต จะ

ไดวา

ปญหาหนงทเหนไดชดของแบบจ าลองนคอ ไมไดใหเลขชก าลงเปนลบ หากตองการเกบ 0.25 จะไมมทางท าเชนนน

เพราะ 0.25 = 2-2 และไมสามารถแทนเลขชก าลง -2 ได การแกไขปญหาโดยการเพมเครองหมายบตไปยงเลขช

ก าลง แตปรากฏวามการแทนทมประสทธภาพมากกวา ส าหรบการใชเลขชก าลงแบบไบอส (Bias) เพราะสามารถ

ใชวงจรจ านวนเตมออกแบบงายกวา โดยเฉพาะส าหรบตวเลขทไมแทนเครองหมาย เมอเปรยบเทยบคาของเลข

ทศนยมสองตว

จากหวขอ 2.4.3 แนวคดการใชคาไบแอส คอการแปลงจ านวนเตมทกตวในชวง ใหเปนจ านวนเตมทไมใช

คาลบ ซงจะถกเกบไวเปนเลขฐานสอง จ านวนเตมในชวงเลขชก าลงทตองการปรบครงแรก โดยการเพมคา bias

คงทนใหกบแตละเลขชก าลง คา bias คอตวเลขทอยใกลชวงกลางของชวงของคาทเปนไปไดทเลอก เพอเปน

ตวแทน 0 ในกรณนจะเลอก 15 เพราะมนอยตรงกลางระหวาง 0 ถง 31 (เลขชก าลงของม 5 บตดงนนอนญาตให

25 หรอ 32 คา) จ านวนใดๆ ทมากกวา 15 ในฟลดเลขชก าลงแสดงถงคาบวก คานอยกวา 15 แสดงถงคาลบ สงน

เรยกวาการแทนคาสวนเกน -15 เพราะเราตองลบ 15 เพอใหไดมลคาทแทจรงของเลขชก าลง โดยปกตแลวเลขยก

ก าลงของ 0s หรอ 1s ทงหมด จะถกสงวนไวส าหรบหมายเลขพเศษ (เชน 0 หรออนฟนต) ในรปแบบงาย ๆ ของ

เราเราอนญาตเลขชก าลงของ 0s และ 1s ทงหมด

กลบไปทตวอยางของการจดเกบ 17 ทค านวณไว 1710 = 0.100012 x 25 ถาปรบเปนโมเดลทใช bias เลข

ชก าลงแบบ bias คอ 15 + 5 = 20:

ในการค านวณคาของตวเลขน จะใชฟลดเลขชก าลง (คาฐานสองเทากบ 20) และลบ bias (20 - 4) จะไดเลขช

ก าลง "ของจรง" เปน 5 ซงสงผลให 0.10001000 x 25

หากเราตองการเกบ 0.25 = 0.1 x 2-1 เราจะได:

ยงคงมปญหาหนงทคอนขางใหญส าหรบระบบน: เนองจากไมไดมตวแทนทเปนเอกลกษณส าหรบแตละหมายเลข

ทงหมดตอไปนเทยบเทา:

เนองจากรปแบบทเหมอนกนซงไมเหมาะส าหรบคอมพวเตอรดจทล ตวเลขทศนยมจะตองเปนมาตรฐาน - นนคอ

บตสดทายของซกนฟแคนดและตองเปน 1 เสมอ กระบวนการนเรยกวาการท าใหเปนมาตรฐาน(normalization)

อนสญญานมขอไดเปรยบ หาก 1 ถกบอกเปนนย จะไดรบความแมนย าเพมขนเลกนอยในซกนแคนด การท าให

เปนมาตรฐานท างานไดดส าหรบทกคายกเวน 0 ซงไมมบตทไมใชศนย ดวยเหตผลดงกลาวโมเดลใดๆ ทใชเพอ

แสดงตวเลขทศนยมจะตองปฏบตตอ 0 เปนกรณพเศษ จะเหนในหวขอถดไปวามาตรฐานทศนยม IEEE-754 ท าให

เกดขอยกเวนส าหรบกฎการท าใหเปนมาตรฐาน

ตวอยาง 2.34 ใหแสดง 0.0312510 ในรปแบบจดทศนยมมาตรฐาน โดยใชแบบจ าลองอยางงายทม bias เกน 15

0.0312510 = 0.000012 X 20 = 0.0001 X2-I = 0.001 X2-2 = 0.01X 2-3 = 0.1X2-4

เมอใชไบอสฟลดเลขชก าลงคอ 15 - 4 = 11

โดยทวไปรปแบบทเรยบงาย ยงไมไดแสดงจ านวนโดยใชการท าใหเปนมาตรฐานสญกรณทบอกถง 1 ซงจะได

กลาวถงในหวขอ 2.5.4

2.5.2 เลขคณตของทศนยม

หากตองการบวกตวเลขทศนยมสองตวทแทนดวย scientific number เชน 1.5 x 102 + 3.5 x 103 เรา

จะเปลยนจ านนวนหนงของโอเพอแรนด เพอใหทงคแสดงในฐานตวชก าลงเดยวกน ในตวอยาง 1.5 x 102 + 3.5 x

103 = 0.15 x 103 + 3.5 x 103 = 3.65 x 103 การเตมจดทศนยมและการลบท างานในลกษณะเดยวกนตามท

แสดงดานลาง

ตวอยาง 2.35 ใหบวกเลขฐานสองตอไปนตามทแสดงในรปแบบ 14 บตปกตโดยใชแบบจ าลองอยางงายทม bias

15

จะเหนวาตวตงปรบตวยกก าลงสอง และตวบวก(augend) มก าลงเทากบ 0 ก าลง จดแนวของตวถก

ด าเนนการทงสองนบนจดฐานสองจะไดวา

การท าใหอยในรปปกต ซงยงคงมเลขชก าลงใหญขนและตดบตล าดบต า จะไดวา

เนองจากโมเดลแบบงาย ตองการนยส าคญทท าใหเปนมาตรฐาน จงไมมวธทจะแทน 0 ซงสามารถแกไขได

งายโดยยอมใหสตรงทงหมด 0 (เครองหมาย 0, 0 เลขชก าลงและ 0 ซกนฟคนด) เพอแทนคา 0 ในหวขอถดไปจะ

เหนวา IEEE-754 ยงสงวนความหมายพเศษส าหรบรปแบบบตบางอยาง

การคณและการหารนนด าเนนการโดยใชกฎเลขชก าลงแบบเดยวกบทใชกบเลขทศนยมเชน 2-3 x 24 = 21

เปนตน

ตวอยาง 2.36 สมมตวาม bias 15 บตคณดวย:

การคณ 0.11001000 ดวย 0.10011010 ใหผลคณเปน 0.0111100001010000 แลวคณดวย 23 x 21 = 24 ซง

เทากบ 111.10000101 การปรบใหเปนรปแบบปกตและจดเลขชก าลงทเหมาะสม ผลคณ floating-point คอ:

2.5.3 ขอผดพลาดของ Floating-Point เมอค านวณดวยดนสอและกระดาษ การแกปญหาตรโกณมตหรอค านวณดอกเบยจากการลงทน จะเขาใจ

อยางถองแทวาเราก าลงท างานในระบบจ านวนจรง(Real number) เรารวาระบบนมคาไมมทสนสด เพราะดวยจ านวนจรงใดๆ เราสามารถหาจ านวนจรงอกจ านวนหนงทเลกกวาไดเสมอ

คอมพวเตอรเปนระบบจ ากด มทเกบขอมลจ ากด ซงแตกตางจากคณตศาสตรในจนตนาการ เมอตองการใหคอมพวเตอรท าการค านวณจ านวนจรง ซงเปนการจ าลองระบบจ านวนอนนตของจ านวนจรงในระบบจ ากด จ านวนเตม ในความเปนจรงสงทเรามคอการประมาณของระบบจ านวนจรง ยงใชจ านวนมากเทาไหรการประมาณกจะยงดขนเทานน อยางไรกตามมขอผดพลาดบางสวนอยเสมอไมวาจะใชกบตกตาม

ขอผดพลาดทเกดจากจดทศนยมอาจมความละเอยดออน บางครงไมมใครสงเกตเหนได ขอผดพลาดทโจงแจงเชนตวเลขลนหรออนเดอรโฟลวเปน 1 วนาททท าใหโปรแกรมขดของ ขอผดพลาดเลกนอยอาจน าไปสผลลพธทผดพลาดอยางรนแรง ซงมกจะตรวจจบไดยากกอนทจะเกดปญหาจรง ตวอยางในโมเดลงายๆ ของเราสามารถแสดงตวเลขมาตรฐานในชวง -0.11111 1112 x 216 ถง +0.11111111 x 216 เหนไดชดวาเราไมสามารถเกบ 2-19 หรอ 2128; เนองจากระดบความละเอยดไมพอ ท าใหไมสามารถจดเกบ 128.5 ไดอยางแมนย าซงอยในขอบเขตของเรา การแปลง 128.5 เปนไบนารจะได 10000000.1 ใช 9 บต ระดบนยส าคญสามารถท าไดเพยงแปดบต โดยทวไปบตในล าดบต าถกปลอยหรอปดเศษลงในบตถดไป อยางไรกตามไมวาจะจดการอยางไร กจะเกดขอผดพลาดในระบบของเรา

ในการค านวณขอผดพลาดสมพทธ เปนการแทนโดยการหาอตราสวนของคาสมบรณของขอผดพลาดตอคาจรงของตวเลข จากการใชตวอยาง 128.5 จะพบวา:

หากไมระวงขอผดพลาดดงกลาว สามารถแพรกระจายผานการค านวณทยาว ท าใหสญเสยความแมนย า

อยางมาก ตารางท 2.3 แสดงการกระจายขอผดพลาดเมอเราคณ 16.24 ดวย 0.91 ซ าโดยใชแบบจ าลอง 14 บตแบบงายของเรา เมอแปลงตวเลขเหลานเปนไบนาร 8 บต จะเหนวามขอผดพลาดมากมายตงแตเรมแรก

อยางทเหนในการท าซ าหกครง มขอผดพลาดมากกวาสามเทาในผลลพธ การวนซ าอยางตอเนองจะท าใหเกดขอผดพลาด 100% เนองจากผลลพธเขาส 0 ในทสดแมวา 14 บตน มขนาดเลกจนเกนความผดพลาด แต

ระบบทศนยมทงหมด ท างานในลกษณะเดยวกน มขอผดพลาดในระดบหนงทเกยวของเสมอ เมอแสดงตวเลขจรงในระบบจ ากด ไมวาจะสรางระบบนนดเพยงใด แมแตขอผดพลาดทเลกทสด กอาจมผลเปนความหายนะโดยเฉพาะอยางยงเมอคอมพวเตอรถกใชเพอควบคมเหตการณทางกายภาพ เชนในทางการทหาร และการแพทย ความทาทายส าหรบนกวทยาศาสตรคอมพวเตอร คอการคนหาอลกอรธมทมประสทธภาพส าหรบการควบคมขอผดพลาดภายในขอบเขตของประสทธภาพและเศรษฐศาสตร