logo

Divu papildinājums

Ir trīs dažādi veidi, kā attēlot zīmīgu veselu skaitli (rakstu). a: parakstītais bits, b: 1 papildinājums un c: 2 papildinājums. Mēģināsim saprast, kā šīs metodes ir iegūtas un kāpēc 2. papildinājumam tiek dota priekšroka salīdzinājumā ar citiem.

Kā zināms, dati tiek glabāti bitos. Kā mēs varam saglabāt atmiņā veselus skaitļus ar parakstu? Lai atrisinātu šo problēmu, vispirms mēs izstrādāsim naivu risinājumu un pēc tam atkārtosim to, līdz atradīsim labāko risinājumu savai problēmai.



a) Parakstīts bits

Mēģinot saglabāt veselu skaitli ar zīmi, šķiet pašsaprotami rezervēt kreiso bitu zīmei un izmantot atlikušos bitus, lai faktiski saglabātu vērtības. Piemēram: 4 bitu sistēmā pirmais bits no kreisās puses tiks rezervēts zīmei (0 apzīmē pozitīvu, bet 1 apzīmē negatīvu), un pārējie 3 biti tiks izmantoti vērtību glabāšanai. Līdzīgi 8 bitu sistēmā pirmais bits no kreisās puses tiks izmantots zīmei, bet atlikušie 7 tiks izmantoti vērtībām.

kungs Nr.

Binārais attēlojums



Decimālvērtība

A

0000



+0

B

0001

+1

C

0010

+2

D

0011

+3

UN

0100

+4

F

0101

+5

G

0110

+6

H

0111

+7

es

1000

-0

1001. gads

-1

K

1010. gads

-2

L

1011. gads

-3

M

1100

-4

N

1101

-5

O

1110

-6

P

1111

-7

Izmantojot šo pieeju, mēs varam veiksmīgi attēlot veselu ciparu ar zīmi. Bet, analizējot to rūpīgāk, mēs varam novērot šādus trūkumus:

1) divi nulles attēlojumi:

4 bitu sistēmā mums vajadzētu būt iespējai saglabāt 16 (24) vērtības, bet no +1 līdz +7 un no -1 līdz -7 ir tikai 14 vērtības. Kur ir atlikušās divas vērtības? Uzmanīgi novērojot tabulu, mēs uzzināsim, ka šīs divas vērtības saplūst līdz 0. Tādējādi mums ir divi nulles attēlojumi, tas nozīmē, ka viens attēlojums ir +0 un otrs -0.

Bet vai divi 0 attēlojumi rada lielas bažas? Nu ko? 16 unikālo vērtību vietā mēs varam saglabāt tikai 15 vērtības. Mēs varam atļauties samazināt diapazonu par 1, vai ne? Programmatūras izstrādātājam tas var nebūt bažīgs, taču ķēdes izstrādātājam var būt ļoti nepatīkami vispirms pārbaudīt, vai vērtība ir +0, un pēc tam pārbaudīt, vai tā ir -0.

2) Parakstīts paplašinājums nedarbojas negatīviem skaitļiem:

Datu apjoms strauji pieaug. Kādu laiku mums ir jāpaplašina bitu sistēma, lai mēs varētu palielināt glabājamo datu diapazonu. 2014. gadā Gangnam Style videoklips pārsniedza YouTube skatījumu ierobežojumu, un tas lika YouTube palielināt skatījumu skaitu no 32 bitiem uz 64 bitu veselu skaitli. Līdzīgi 32 bitu Unix pulkstenis pārpildīsies 2038. gada 19. janvārī, jo tas ieraksta laiku sekundēs 32 bitu veselā skaitlī.

Tāpēc vienlīdz svarīgi ir, lai mūsu reprezentācijas sistēma būtu viegli paplašināma, kas nav iespējams ar šo reprezentācijas sistēmu.

Decimālzīme

4 bitu

5 bitu

6 bitu

+2

0010

00010

000010

+7

0111

00111

000111

-2

1010. gads

10010 (!= 11010)

100010 (!= 111010)

-7

1111

10111 (!= 11111)

100111 (!= 111111)

3) Binārā pievienošana nedarbojas:

Mēģināsim pievienot divus bināros skaitļus:

Binārs

Decimālzīme

Binārs

Decimālzīme

Binārs

Decimālzīme

Skaitlis-1

0010

+2

0111

+7

1101

-5

Skaitlis-2

1010. gads

-2

1010. gads

-2

0011

+3

Binārā pievienošana

1100

-4

0001

+1

0000

+0

Decimāldaļa saskaitīšana

+0

+5

-2

Kāpēc vienkāršs binārais papildinājums šeit nedarbojas? Iemesls ir tāds, ka zīmes bits (visvairāk pa kreisi) nav parasts bits un nav daļa no faktiskā skaitļa. Iedomājieties situāciju, kad ir jāizstrādā aparatūras shēma, lai ignorētu zīmes bitu, lai veiktu pievienošanu, un pēc tam jāpievieno zīmes bits.

Tātad, tas bija naivs veids, kā attēlot veselu ciparu. Šīs pieejas galvenā problēma ir tā, ka mēs esam kartējuši negatīvos skaitļus uz leju. Ja mēs mainīsim savu kartēšanas sistēmu, lai tās būtu augšā, dažas no iepriekš minētajām problēmām tiks atrisinātas.

b) 1's Co īstenot

Ja mēs pārveidosim savus negatīvos skaitļus no augšas uz leju, mēs iegūsim šādu bināro tabulu:

Jā nē.

Binārais attēlojums

Decimālvērtība

1 papildinājums

Parakstīts bits

A

0000

+0

+0

B

0001

+1

+1

C

0010

+2

+2

D

0011

+3

+3

UN

0100

+4

+4

F

0101

+5

+5

G

0110

+6

+6

H

0111

+7

+7

es

1000

-7

-0

1001. gads

-6

-1

K

1010. gads

-5

-2

L

1011. gads

-4

-3

M

1100

-3

-4

N

1101

-2

-5

O

1110

-1

-6

P

1111

-0

-7

Kā iegūt vesela skaitļa bināro attēlojumu 1 komplementa metodē?

  • Pozitīvie skaitļi tiek attēloti līdzīgi kā vesela skaitļa metode
  • Negatīvie skaitļi tiek attēloti, apgriežot katru atbilstošā pozitīvā skaitļa bitu (invertēšanu var viegli veikt, izmantojot NOT gate aparatūras projektēšanas laikā)

Rūpīgi analizēsim to, lai redzētu, vai esam panākuši kādu uzlabojumu.

1) divi nulles attēlojumi:

Šajā pieejā mums ir arī divi nulles attēlojumi.

2) Parakstīts paplašinājums nedarbojas negatīviem skaitļiem:

Parakstīts paplašinājums lieliski darbojas negatīviem skaitļiem.

Decimālzīme

4 bitu

5 bitu

6 bitu

+2

0010

00010

000010

+7

0111

00111

000111

-2

1101

11101

111101

-7

1000

11 000

111 000

3) Binārā pievienošana darbojas ar modificētiem noteikumiem:

Binārs

Decimālzīme

Binārs

Decimālzīme

Binārs

Decimālzīme

Skaitlis-1

0010

+2

0111

+7

1010. gads

-5

Skaitlis-2

1101

-2

1101

-2

0011

+3

Binārā pievienošana

1111

-0

0100

+4

1101

-2

Decimāldaļa saskaitīšana

+0

+5

-2

Atbilde ne vienmēr ir pareiza, taču tā ir ļoti tuvu pareizajai atbildei. Mēs varam panākt, lai tas darbotos, ja ievērosim šo noteikumu ja esat ģenerējis pārnešanu uz priekšu kreisajā pusē, tad neizmetiet to, bet atnesiet to atpakaļ un pievienojiet to labajā malā.

Binārs

Decimālzīme

Binārs

Decimālzīme

Binārs

Decimālzīme

Skaitlis-1

0111

+7

1110

-1

0111

+7

Skaitlis-2

1101

-2

1001. gads

-6

1011. gads

-4

Binārā pievienošana

(1) 0100

+4

(1) 0111

+7

(1) 0010

+2

Tiek pievienota pārnešana atpakaļ

0101

+5

1000

-7

0011

+3

Noteikti 1 komplementa metode ir labāka par parakstīto bitu. Mūsu galvenās problēmas ir atrisinātas, taču tās joprojām ir problēma (ar diviem nulles attēlojumiem), un mūsu uzlaušana binārajā pievienošanā sniedz norādes, kā uzlabot 1. komplementa metodi. Pārfrāzēsim šos teikumus, lai būtu vieglāk.

  • Mums ir papildu nulles attēlojums, kas nav nepieciešams
  • Saskaitot divus bināros skaitļus, ja mums ir pārnešana uz priekšu kreisajā lielākajā bitā, tad rezultātam jāpievieno +1, t.i., pareizo atbildi var atrast, pārejot uz nākamo rindu binārajā tabulā.

Abas no tām norāda, ka problēmas galvenais iemesls ir papildu nulles attēlojums. Tātad, noņemsim šo papildu nulli un pārvietosim visas negatīvās vērtības uz nākamo rindu (-7 pārvietosies no I -> J, -6 pārvietosies no J -> K un tā tālāk...)

c) 2. papildinājums

Kad mēs noņemsim -0 no 1 papildinājuma tabulas un nobīdīsim visas negatīvās vērtības vienu rindu zemāk, mēs iegūsim šādu tabulu, ko sauc par 2 papildinājumu:

Jā nē.

Binārais attēlojums

Decimālvērtība

2 papildinājums

1 papildinājums

Parakstīts bits

A

0000

+0

+0

+0

B

0001

+1

+1

+1

C

0010

+2

+2

+2

D

0011

+3

+3

+3

UN

0100

+4

+4

+4

F

0101

+5

+5

+5

G

0110

+6

+6

+6

H

0111

+7

+7

+7

es

1000

-8

-7

-0

1001. gads

-7

= apgriezts 7 + 1 bits

-6

-1

K

1010. gads

-6

= apgriezts 6 + 1 bits

-5

-2

L

1011. gads

-5

= apgriezts 5 + 1 bits

-4

-3

M

1100

-4

= apgriezts 4 + 1 bits

-3

-4

N

1101

-3

= apgriezts 3 + 1 bits

-2

-5

O

1110

-2

= apgriezts 2 + 1 bits

-1

-6

P

1111

-1

= apgriezts 1 + 1 bits

-0

-7

Kā iegūt vesela skaitļa bināro attēlojumu 2 komplementa metodē?

  • Pozitīvie skaitļi tiek attēloti līdzīgi kā vesela skaitļa metode
  • Negatīvie skaitļi tiek attēloti, apgriežot katru atbilstošā pozitīvā skaitļa bitu, pēc tam pievienojot tam 1 bitu

1) Viens nulles attēlojums:

Tagad mums ir tikai viens nulles attēlojums, un tas ļauj mums saglabāt kopā 16 unikālas vērtības (+0 līdz +7 un -1 līdz -8).

2) Parakstīts paplašinājums darbojas negatīviem skaitļiem:

Parakstīts paplašinājums lieliski darbojas negatīviem skaitļiem.

Decimālzīme

4 bitu

5 bitu

6 bitu

+2

0010

00010

000010

+7

0111

00111

000111

-2

1110

11110

111110

-7

1001. gads

11001

111001

3) Binārā pievienošana:

Binārs

Decimālzīme

Binārs

Decimālzīme

Binārs

Decimālzīme

Binārs

Decimālzīme

Skaitlis-1

0010

+2

0111

+7

1011. gads

-5

1111

-1

Skaitlis-2

1110

-2

1110

-2

0011

+3

1010. gads

-6

Atbilde

0000

+0

arp - komanda
0101

+5

1110

-2

1001. gads

-7

4) Pirmais bits ir parakstīts bits:

2 papildinājumam ir šī jaukā īpašība, ka pirmais bits ir zīmes bits, jo viss pozitīvais sākas ar 0, bet viss negatīvais sākas ar 1.

5) Atmiņas pārpildes pārbaude:

Veicot pievienošanu, mēs pārliecinājāmies, ka mūsu atbilde ir diapazonā, taču, izstrādājot aparatūru, ir jānosaka atmiņas pārpilde. Aparatūras dizaineriem būtu ļoti slikta ideja pārbaudīt lielumu, lai noķertu pārplūdi. 2 komplementa metode nodrošina ļoti vienkāršu veidu, kā noteikt atmiņas pārpildīšanu. es f veikt ar parakstīto bitu nav vienāds ar veikt no parakstītā bita, tad tas ir atmiņas pārpildes gadījums t.i., ja pārnesums uz parakstīto bitu ir 0, bet veikts ir 1 vai ja pārnesums 1, bet veikts ir 0, tad runa ir par atmiņas pārpildīšanu.

Binārs

Decimālzīme

Binārs

Decimālzīme

Binārs

Decimālzīme

Binārs

Decimālzīme

Skaitlis-1

1011. gads

-5

0010

2

0111

+7

1011. gads

-5

Skaitlis-2

1100

-4

0110

6

1110

-2

0011

3

Papildinājums

(1) 0111

(0)1000

(1)0101

(0)1110

ienes parakstīt bitu

0

pārplūde

1

pārplūde

1

0

veikt, lai parakstītu bitu

1

0

1

0