Reprezentacje liczb znakowych

Reprezentacje liczb podpisanych są używane do rozwiązania problemu reprezentowania ujemnych liczb całkowitych w systemie binarnym. Problem z próbą przechowywania ujemny znak (-) liczby binarnej jest to, że nie ma żadnych stanów w lewo do wykorzystania, z którym do reprezentowania ujemnego przypisania. Nie jest możliwe, aby po prostu użyć "off" dla minus i "on" dla plus, ponieważ komputer nie miałby sposobu, aby wiedzieć, czy jest to cyfra lub znak.

Aby przezwyciężyć ten problem, projektanci komputerów wymyślili dwie metody przechowywania ujemnych liczb binarnych: znak i wielkość oraz dopełnienie dwójkowe. Dają one alternatywne reprezentacje dla liczb podpisanych.

Znak i magnitudo

Sign and Magnitude działa poprzez zmianę najbardziej znaczącego bitu (MSB - pierwsza cyfra) na 1, jeśli liczba jest ujemna, i zmniejszenie liczby o jeden, na przykład:

0000 0010 (2)

stanie się...

1000 0010 (-2)

Ta metoda przechowywania ujemnych liczb binarnych nie działa, ponieważ:

  • Arytmetyka binarna nie będzie działać.
  • Musimy najpierw wiedzieć, jakiego mechanizmu przechowywania danych używa kompilator danego języka.

1's complement

Komplementarność 1's działa poprzez zamianę 1s na 0s i 0s na 1s, na przykład:

0000 0010 (2)

stanie się...

1111 1101 (-2)

Podobnie jak w metodzie znak-i-magnitudo, jest to łatwo zdefiniowane jako liczba ujemna, ponieważ jej najbardziej znaczący bit jest 1.

2's complement

Dopełnienie 2 jest trudniejszym sposobem przechowywania negatywów. Składa się on z trzech kroków:

  1. Znajdź dodatnią liczbę binarną (np. 8base 10 = 0000 1000base 2).
  2. Zamień 1s na 0s, a 0s na 1s (np. 0000 1000base 2 staje się 1111 0111base 2).

Jest to znane jako "odwracanie bitów", lub zastosowanie logicznego NOT do oryginalnej reprezentacji bazy 2.

  1. Dodać 1 (np. 1111 0111baza 2 + 1baza 2 = 1111 1000baza 2).

Ta metoda jest lubiana, ponieważ:

  • To jest jak znak i wielkość; liczba ujemna zaczyna się od 1, a liczba dodatnia od 0.
  • Arytmetyka binarna będzie działać.
  • Istnieje tylko jedna wartość dla 0 (0000 0000base 2).

AlegsaOnline.com - 2020 / 2023 - License CC3