2....
Post on 30-May-2020
6 Views
Preview:
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 บตน มขนาดเลกจนเกนความผดพลาด แต
ระบบทศนยมทงหมด ท างานในลกษณะเดยวกน มขอผดพลาดในระดบหนงทเกยวของเสมอ เมอแสดงตวเลขจรงในระบบจ ากด ไมวาจะสรางระบบนนดเพยงใด แมแตขอผดพลาดทเลกทสด กอาจมผลเปนความหายนะโดยเฉพาะอยางยงเมอคอมพวเตอรถกใชเพอควบคมเหตการณทางกายภาพ เชนในทางการทหาร และการแพทย ความทาทายส าหรบนกวทยาศาสตรคอมพวเตอร คอการคนหาอลกอรธมทมประสทธภาพส าหรบการควบคมขอผดพลาดภายในขอบเขตของประสทธภาพและเศรษฐศาสตร
top related