Repræsentationer af tal med fortegn

Repræsentationer af tal med fortegn bruges til at løse problemet med at repræsentere negative heltal i binære tal. Problemet ved at forsøge at gemme det negative tegn (-) i et binært tal er, at der ikke er nogen tilstande tilbage, som kan bruges til at repræsentere den negative tildeling. Det er ikke muligt blot at bruge "off" for minus og "on" for plus, fordi computeren ikke ville have nogen mulighed for at vide, om det var et tal eller et tegn.

For at løse dette problem opfandt computerdesignere to metoder til lagring af negative binære tal: tegn og størrelse og 2's komplement. Disse giver alternative repræsentationer for tal med fortegn.

 

Tegn-og-magnitude

Sign and Magnitude fungerer ved at ændre den mest betydningsfulde bit (MSB - det første ciffer) til en 1, hvis tallet er negativt, og reducere tallet med f.eks. én:

0000 0010 (2)

vil blive...

1000 0010 (-2)

Denne metode til lagring af negative binære tal fungerer ikke, fordi:

  • Binær aritmetik virker ikke.
  • Vi skal først vide, hvilken lagringsmekanisme kompileren til et bestemt sprog anvender.
 

1's komplement

1's Complement fungerer ved at bytte 1'er ud med 0'er og 0'er med 1'er for eksempel:

0000 0010 (2)

vil blive...

1111 1101 (-2)

Ligesom med tegn-og-magnitude-metoden kan dette nemt defineres som et negativt tal, fordi den mest betydningsfulde bit er 1

 

2's komplement

2's komplement er en vanskeligere måde at gemme negativer på. Der er tre trin til det:

  1. Find det positive binære tal (f.eks. 8base 10 = 0000 1000base 2).
  2. Udskift 1'erne med 0'er og 0'erne med 1'er (f.eks. 0000 1000base 2 bliver til 1111 0111base 2).

Dette kaldes at "vende bitsene", eller at anvende logisk NOT på den oprindelige base 2-repræsentation.

  1. Tilføj 1 (f.eks. 1111 0111base 2 + 1base 2 = 1111 1000base 2).

Denne metode er populær, fordi:

  • Det er ligesom tegn og størrelse; et negativt tal starter med et 1-tal og et positivt tal starter med et 0-tal.
  • Den binære aritmetik vil fungere.
  • Der er kun én værdi for 0 (0000 0000 0000base 2).
 

AlegsaOnline.com - 2020 / 2023 - License CC3