Pojęcie systemu liczb mieszanych

Wśród systemów liczbowych wyróżnia się klasę tzw mieszane systemy liczbowe.

Definicja 1

Mieszany to się nazywa notacja, w którym liczby określone w pewnym systemie liczbowym o podstawie $P$ są reprezentowane za pomocą cyfr innego systemu liczbowego o podstawie $Q$, gdzie $Q

Ponadto w takim systemie liczbowym, aby uniknąć rozbieżności w reprezentacji każdej cyfry systemu o podstawie $P$, przydzielana jest taka sama liczba cyfr systemu o podstawie $Q$, wystarczająca do przedstawienia dowolnego cyfra systemu o podstawie $P$.

Przykładem systemu liczb mieszanych jest system binarny system dziesiętny.

Praktyczne uzasadnienie stosowania binarnego systemu dziesiętnego

Ponieważ osoba w swojej praktyce szeroko posługuje się systemem liczb dziesiętnych, a komputer zazwyczaj operuje liczbami binarnymi i arytmetyką binarną, w praktyce wprowadzono opcję kompromisową - binarny system zapisu dziesiętnego, który jest zwykle używany, gdy istnieje potrzeba częstego stosowania procedury wprowadzania/wyprowadzania dziesiętnego (na przykład w przypadku zegarków elektronicznych, kalkulatorów itp.). W takich urządzeniach nie zawsze wskazane jest stosowanie uniwersalnego mikrokodu do konwersji liczb binarnych na dziesiętne i odwrotnie ze względu na małą ilość pamięci programu.

Uwaga 1

W niektórych typach komputerów jednostki arytmetyczno-logiczne (ALU) zawierają specjalne dziesiętne jednostki arytmetyczne, które wykonują operacje na liczbach reprezentowanych w binarnym kodzie dziesiętnym. Pozwala to w niektórych przypadkach znacznie zwiększyć wydajność komputera.

Na przykład zautomatyzowany system przetwarzania danych wykorzystuje dużą liczbę liczb, ale nie wykonuje wielu obliczeń. W takim przypadku operacje przenoszenia numerów z jednego systemu do drugiego znacznie przekraczałyby czas potrzebny na wykonanie operacji przetwarzania informacji. Z drugiej strony mikroprocesory używają czystych liczb binarnych, ale rozumieją również polecenia konwersji na binarną notację dziesiętną. Jednostka ALU mikrokontrolera AVR (jak również innych mikroprocesorów) wykonuje elementarną arytmetykę i operacje logiczne nad liczbami reprezentowanymi w kodzie binarnym, a mianowicie:

    odczytuje wyniki konwersji ADC;

    w formacie całkowitym lub zmiennoprzecinkowym przetwarza wyniki pomiarów.

Jednak wynik końcowy wyświetlany jest na wskaźniku w formacie dziesiętnym, wygodnym dla ludzkiej percepcji.

Zasady konstrukcji systemu liczb dwójkowo-dziesiętnych

Podczas konstruowania systemu liczb binarno-dziesiętnych do reprezentowania każdej cyfry dziesiętnej przydzielane są cyfry binarne w wysokości 4 $, ponieważ maksymalna cyfra dziesiętna 9 $ jest kodowana jako 10012 $.

Na przykład: $925_(10) = 1001 0010 0101_(2-10)$.

Rysunek 1.

W tym zapisie kolejne poczwórne cyfry binarne reprezentują odpowiednio cyfry 9 $, 2 $ i 5 $ zapisu dziesiętnego.

Aby zapisać liczbę w binarnym systemie dziesiętnym, należy ją najpierw przedstawić w systemie dziesiętnym, a następnie każdą cyfrę dziesiętną wchodzącą w skład liczby należy przedstawić w systemie dziesiętnym system binarny. Jednocześnie do zapisania różnych cyfr dziesiętnych w systemie liczb binarnych wymagana jest różna liczba cyfr binarnych. Aby uniknąć stosowania jakichkolwiek ograniczników, podczas przedstawiania cyfry dziesiętnej w systemie binarnym zawsze zapisywane są 4 cyfry binarne. Nazywa się grupę tych czterech cyfr zeszyt.

Chociaż notacja BCD wykorzystuje tylko cyfry $0$ i $1$, różni się ona od binarnej reprezentacji danej liczby, ponieważ dziesiętny odpowiednik liczby binarnej jest kilkakrotnie większy niż dziesiętny odpowiednik liczby BCD.

Na przykład:

$1001 0010 0101_{(2)} = 2341_{(10)}$,

$1001 0010 0101_{(2)} = 925_{(2-10)}$.

Zapis ten jest dość często używany jako krok pośredni podczas konwersji liczby z systemu dziesiętnego na binarny i odwrotnie. Ponieważ liczba 10 $ nie jest dokładną potęgą liczby 2 $, nie wszystkie tetrady 16 $ są używane (tetrady reprezentujące liczby od $ A $ do $ F $ są odrzucane, ponieważ liczby te są uważane za zabronione), ale algorytmy arytmetyczne operacje na liczbach wielocyfrowych są w tym przypadku bardziej złożone niż w podstawowych systemach liczbowych. A jednak binarny system liczb dziesiętnych jest używany nawet na tym poziomie w wielu mikrokalkulatorach i niektórych komputerach.

Aby skorygować wyniki operacji arytmetycznych na liczbach przedstawionych w binarnym kodzie dziesiętnym, technologia mikroprocesorowa wykorzystuje polecenia, które przekształcają wyniki operacji na binarny system liczb dziesiętnych. Stosuje się następującą zasadę: jeśli w wyniku operacji (dodawania lub odejmowania) na tetradzie otrzymana zostanie liczba większa od 9 $, do tej tetrady dodawana jest liczba 6 $.

Na przykład: 75 USD + 18 = 93 USD.

$10001101\(8D)$

W niskim notatniku pojawiła się zakazana cyfra $D$. Dodaj 6 $ do najniższego tetradu i uzyskaj:

$10010011 \ (93)$

Jak widać pomimo tego, że dodawanie przeprowadzono w systemie liczb binarnych, wynik operacji otrzymano w systemie liczb dwójkowo-dziesiętnych.

Uwaga 2

Równoważenie bitowe często przeprowadza się w oparciu o binarny system dziesiętny. Najwłaściwsze jest stosowanie systemów liczb binarnych i binarno-dziesiętnych, ponieważ w tym przypadku liczba cykli bilansowania jest najmniejsza spośród innych systemów liczbowych. Należy pamiętać, że zastosowanie kodu binarnego pozwala nam skrócić czas przetwarzania napięcia kompensacyjnego o około 20 $\%$ w porównaniu z kodem binarno-dziesiętnym.

Zalety stosowania binarnego systemu dziesiętnego

Konwersja liczb z systemu dziesiętnego na system binarno-dziesiętny nie wiąże się z obliczeniami i jest łatwa do zrealizowania za pomocą najprostszego obwody elektroniczne, ponieważ konwertowana jest niewielka liczba (4) cyfr binarnych. Odwrotna konwersja następuje automatycznie w komputerze za pomocą specjalnego programu do tłumaczenia.

Zastosowanie systemu liczb binarno-dziesiętnych wraz z jednym z głównych systemów liczbowych (binarnym) pozwala na opracowywanie i tworzenie komputerów o dużej wydajności, ponieważ zastosowanie dziesiętnego bloku arytmetycznego w ALU eliminuje potrzebę programowanej konwersji liczb z jednego systemu liczbowego na inny podczas rozwiązywania problemów.

Ponieważ dwie binarne cyfry dziesiętne tworzą bajt 1 $, który może być użyty do przedstawienia wartości liczb od 0 $ do 99 $, a nie od 0 $ do 255 $, jak przy użyciu liczby binarnej 8 $, to używając $1$ bajt za Konwertując co dwie cyfry dziesiętne, można utworzyć liczby BCD z dowolną wymaganą liczbą miejsc po przecinku.

Czasami wygodnie jest przechowywać liczby w pamięci procesora w postaci dziesiętnej (na przykład w celu wyświetlenia na ekranie wyświetlacza). Do zapisania takich liczb używamy kody BCD. Nie należy mylić binarnego kodu dziesiętnego z . Do zapisania jednego miejsca dziesiętnego używane są cztery bity binarne. Te cztery bity nazywane są tetradą. Czasami pojawia się nazwa wywodząca się z literatury angielskiej: nibble. Za pomocą czterech bitów można zakodować szesnaście cyfr. Dodatkowe kombinacje w binarnym kodzie dziesiętnym są zabronione. Tabela zgodności pomiędzy BCD a cyframi dziesiętnymi znajduje się poniżej:

Kod BCD Kod dziesiętny
0 0 0 0 0
0 0 0 1 1
0 0 1 0 2
0 0 1 1 3
0 1 0 0 4
0 1 0 1 5
0 1 1 0 6
0 1 1 1 7
1 0 0 0 8
1 0 0 1 9

Pozostałe kombinacje kodu binarnego w tetradzie są zabronione. Zapiszmy przykład binarnego kodu dziesiętnego:

1258 = 0001 0010 0101 1000

Pierwszy notes zawiera cyfrę 1, drugi – 2, trzeci – 5, a ostatni notes zawiera cyfrę 8. W tym przykładzie do zapisania liczby 1258 potrzebne były cztery zeszyty. Liczba komórek pamięci mikroprocesora zależy od jego pojemności. W przypadku procesora 16-bitowego cała liczba zmieści się w jednej komórce pamięci.

589 = 0000 0101 1000 1001

W tym przykładzie do zapisania liczby wystarczą trzy notebooki, ale komórka pamięci jest 16-bitowa. Dlatego najwyższa tetrada jest wypełniona zerami. Nie zmieniają znaczenia cyfry. Gdybyśmy wypełnili dolną tetradę zerami, liczba wzrosłaby dziesięciokrotnie!

Podczas zapisywania liczb dziesiętnych często trzeba wpisać znak liczby i kropkę dziesiętną (kropka w krajach anglojęzycznych). BCD jest często używany do wybierania numeru telefonu lub wybierania kodów usług telefonicznych. W tym przypadku oprócz cyfr dziesiętnych często stosuje się symbole „*” lub „#”. Zabronione kombinacje są używane do zapisywania tych znaków w binarnym kodzie dziesiętnym

Dość często jedna komórka pamięci (osiem, szesnaście lub trzydzieści dwa bity) jest przydzielana w pamięci procesora do przechowywania jednej cyfry dziesiętnej. Ma to na celu zwiększenie szybkości programu. Aby odróżnić ten sposób zapisu liczby dziesiętnej binarnej od standardowej, sposób zapisu liczby dziesiętnej pokazany na przykładzie nazywa się forma zapakowana binarna liczba dziesiętna. Zapiszmy te same liczby co w poprzednim przykładzie w rozpakowanym kodzie BCD dla procesora ośmiobitowego:

1258 =00000001 00000010 00000101 00001000

Pierwsza linia zawiera cyfrę 1, druga - 2, trzecia - 5, a ostatnia linia zawiera cyfrę 8. W tym przykładzie do zapisania liczby potrzebne były cztery linie (komórki pamięci) 1258

589 = 00000000 00000101 00001000 00001001

Sumowanie liczb dziesiętnych binarnych.

Sumowanie liczb binarnych dziesiętnych można wykonać zgodnie z zasadami zwykłej arytmetyki binarnej, a następnie wykonać Korekta BCD. Korekcja BCD polega na sprawdzeniu każdej tetrady pod kątem poprawnych kodów. Jeśli w dowolnej tetradzie zostanie wykryta zabroniona kombinacja, oznacza to przepełnienie. W takim przypadku konieczne jest wykonanie binarnej korekty dziesiętnej. Korekta BCD polega na dodatkowym zsumowaniu liczby szóstej (liczby zabronionych kombinacji) z tetradą, w której nastąpiło przepełnienie lub nastąpiło przejście do najwyższej tetrady. Podajmy dwa przykłady.


Binarny system liczb dziesiętnych stał się powszechny w nowoczesne komputery ze względu na łatwość konwersji na system dziesiętny i odwrotnie. Stosuje się go tam, gdzie nie skupia się na prostocie technicznej konstrukcji maszyny, ale na doświadczeniu użytkownika. W tym systemie liczbowym wszystkie cyfry dziesiętne są oddzielnie kodowane czterema cyframi binarnymi i w tej formie zapisywane są sekwencyjnie, jedna po drugiej.

Binarny system dziesiętny nie jest ekonomiczny z punktu widzenia realizacji konstrukcji technicznej maszyny (wymagane wyposażenie zwiększa się o około 20%), ale jest bardzo wygodny przy przygotowywaniu zadań i programowaniu. W binarnym systemie dziesiętnym podstawą systemu liczbowego jest liczba 10, ale każda cyfra dziesiętna (0, 1, ..., 9) jest reprezentowana, to znaczy zakodowana, za pomocą cyfr binarnych. Do przedstawienia jednej cyfry dziesiętnej używane są cztery cyfry binarne. Tutaj oczywiście występuje redundancja, ponieważ 4 cyfry binarne (lub tetrada binarna) mogą reprezentować nie 10, ale 16 liczb, ale jest to już koszt produkcji ze względu na wygodę programowania. Istnieje wiele systemów dziesiętnych kodowanych binarnie do przedstawiania liczb, charakteryzujących się tym, że pewnym kombinacjom zer i jedynek w obrębie jednej tetrady przypisuje się określone wartości cyfr dziesiętnych. W najczęściej używanym naturalnym systemie dziesiętnym kodowanym binarnie wagi cyfr binarnych w tetradzie są naturalne, czyli 8, 4, 2, 1 (tabela 6).

Tabela 6

Binarny zapis dziesiętny

Na przykład liczba dziesiętna 5673 w notacji BCD to 01010110011100011.

Konwersja liczb z jednego systemu liczbowego na inny jest ważną częścią arytmetyki maszynowej. Rozważmy podstawowe zasady tłumaczenia.

1. Aby zamienić liczbę binarną na liczbę dziesiętną, należy zapisać ją w postaci wielomianu składającego się z iloczynu cyfr liczby i odpowiedniej potęgi 2 i obliczyć ją zgodnie z zasadami arytmetyki dziesiętnej:

Podczas tłumaczenia wygodnie jest skorzystać z tabeli potęg dwójki:

Tabela 7.

Potęgi liczby 2

n (stopień)

Przykład. Zamień liczbę na system dziesiętny.

2. Aby zamienić liczbę ósemkową na liczbę dziesiętną, należy zapisać ją w postaci wielomianu składającego się z iloczynu cyfr liczby i odpowiedniej potęgi liczby 8 i obliczyć ją zgodnie z zasadami arytmetyki dziesiętnej:

Podczas tłumaczenia wygodnie jest skorzystać z tabeli potęg ośmiu:

Tabela 8.

Potęgi liczby 8

n (stopień)
8n

Przykład. Konwertuj liczbę 75013 8 na system dziesiętny.

Reprezentacja liczb w pamięci komputera ma swoją specyficzną cechę, gdyż w pamięci komputera muszą być one umieszczone w bajtach – najmniejszych adresowalnych komórkach pamięci. Cała pamięć komputera jest podzielona na oddzielne sekcje po 8 bitów (tj. bajtów). Bajty mają liczby: 0, 1, 2, ..., zwane adresami. Dwie sąsiednie sekcje: 0 i 1, 2 i 3 itd. tworzą komórkę pamięci komputera. Te. jedna komórka pamięci może przechowywać dwa bajty lub 16 bitów informacji. W przypadku zawartości jednej komórki używana jest nazwa - „słowo maszynowe” lub po prostu „słowo”. Oczywiście za adres liczby uważa się adres pierwszego bajtu, tj. liczby parzyste zaczynające się od 0, 2, 4, 6 itd. Bajt może zawierać dowolny kod składający się z ośmiu cyfr binarnych, a zadaniem reprezentacji jest wskazanie zasad zapisu liczby w jednym lub większej liczbie bajtów.

Liczby mogą być dokładnymi liczbami całkowitymi, ułamkami dokładnymi, wymiernymi, niewymiernymi, ułamkami przybliżonymi, dodatnimi i ujemnymi. Liczby mogą być „karłami” (na przykład masa atomu), „gigantami” (na przykład masa ziemi), rzeczywistymi (na przykład liczba uczniów w grupie, wzrost, wiek). Każda z liczb będzie wymagała własnej liczby bajtów dla optymalnej reprezentacji w pamięci.

Nie da się stworzyć jednej optymalnej reprezentacji liczb rzeczywistych. Dlatego też zbiory liczb podzielono na typy (np. liczby całkowite z zakresu od... do..., przybliżone liczby zmiennoprzecinkowe z liczbą cyfr znaczących... itp.). Dla każdego indywidualnego typu tworzona jest jego własna metoda reprezentacji.

Liczby całkowite. Dodatnie liczby całkowite od 0 do 255 można przedstawić bezpośrednio w systemie liczb binarnych (kodzie binarnym). Takie liczby będą zajmować jeden bajt w pamięci komputera.

W tej formie reprezentacji arytmetykę binarną można łatwo zaimplementować na komputerze. Znak plus lub minus liczby jest kodowany jako oddzielny bit. Zwykle jest to najbardziej znaczący fragment. Zero interpretowane jest jako „plus”, jeden – jako „minus”. Zatem liczby całkowite z zakresu od –128 do +127 można zakodować w jednym bajcie. W tym przypadku arytmetyka binarna będzie nieco skomplikowana, ponieważ w tym przypadku istnieją dwa kody reprezentujące liczbę zero 00000000 i 100000000. Należy to zapewnić w komputerze na poziomie sprzętowym. Ta metoda nazywane są reprezentacje liczb całkowitych kod bezpośredni. Liczby ujemne są nieco łatwiejsze, jeśli użyjesz kodu uzupełnienia do dwóch. W kodzie uzupełnienia do dwójki liczby dodatnie są takie same, jak liczby dodatnie w kodzie bezpośrednim, natomiast liczby ujemne uzyskuje się poprzez odjęcie odpowiedniej liczby od 100 000 000. Przykładowo numer -3 otrzyma kod:

Arytmetyka jest dobrze zaimplementowana w kodzie uzupełnienia do dwóch. Każdy kolejny kod uzyskuje się z poprzedniego poprzez dodanie jedynki do najbliższego bitu dziewiątej cyfry. Na przykład 5 – 3 = 5 + (-3)

1 00000010

Odrzucając podkreślony najbardziej znaczący bit, otrzymujemy 2.

Podobnie liczby całkowite od 0 do 65536 i liczby całkowite od –32768 do 32767 są reprezentowane w komórkach dwubajtowych w systemie liczb binarnych (szesnastkowym). Istnieją również reprezentacje liczb całkowitych w komórkach czterobajtowych.

Prawdziwe liczby. Liczby rzeczywiste w matematyce są reprezentowane przez ułamki skończone lub nieskończone, tj. Dokładność reprezentacji liczb nie jest ograniczona. Jednakże w komputerze liczby przechowywane są w rejestrach i komórkach pamięci, które stanowią sekwencję bajtów o ograniczonej liczbie bitów. W rezultacie nieskończone lub bardzo długie liczby są obcinane do określonej długości i pojawiają się jako przybliżenia w reprezentacji komputerowej. W większości systemów programowania części całkowite i ułamkowe w liczbach rzeczywistych są oddzielane nie przecinkiem, ale kropką.

Aby przedstawić liczby rzeczywiste, zarówno bardzo małe, jak i bardzo duże, wygodnie jest użyć postaci iloczynu zapisywania liczb:

Gdzie m jest podstawą systemu liczbowego;

P jest liczbą całkowitą zwaną wykładnikiem.

Ten sposób zapisywania liczb nazywa się reprezentacją liczby zmiennoprzecinkowe.

Te. liczbę 1234,56 można zapisać:

1234,56 = 123,456*10 1 = 12,3456*10 2 = 1,23456*10 3 = 0,123456*10 4 .

Pomysł ten nie jest jasny. Jeśli mantysa (0,1 dla dziesiętnego SS), wówczas reprezentacja liczby staje się jednoznaczna i postać ta nazywa się znormalizowany. Jeżeli „zmiennoprzecinkowy” punkt mantysy znajduje się przed pierwszą znaczącą cyfrą, to przy ustalonej liczbie cyfr przypisanych do mantysy rejestrowana jest maksymalna liczba cyfr znaczących liczby, tj. Maksymalna dokładność.

Liczby rzeczywiste w komputerach różne typy są zapisywane inaczej, ale istnieje kilka standardowych formatów międzynarodowych, które różnią się dokładnością, ale mają tę samą strukturę. Spójrzmy na przykład liczby 4-bajtowej.

Charakterystyczny Mantysa

mantysa

Pierwszy bit reprezentacji służy do zapisania znaku mantysy. Za nim znajduje się grupa bitów, które określają kolejność, a pozostałe bity określają wartość bezwzględną mantysy. Rozmiary obu grup cyfr są stałe. Ponieważ kolejność może być dodatnia lub ujemna, musimy rozwiązać problem jej znaku. Wartość zamówienia jest reprezentowana w nadmiarze, czyli zamiast prawdziwej wartości zamówienia, wywoływana jest liczba charakterystyczny(Lub przesunięty porządek). Aby otrzymać charakterystykę należy do zamówienia dodać offset. Na przykład, jeśli do przechowywania kolejności użyjesz ośmiu bitów i wartości od –128 do +127, zostanie użyte przesunięcie 128, wówczas do przedstawienia kolejności zostaną użyte wartości od 0 do 255, tj. tylko liczby nieujemne.

Ponieważ Mantysa znormalizowanej liczby jest zawsze równa 1; niektóre schematy reprezentacji jedynie to sugerują, używając dodatkowej cyfry w celu zwiększenia dokładności reprezentacji mantysy.

Użycie formy przesuniętej pozwala na wykonywanie operacji na zleceniach jak na liczbach bez znaku, co upraszcza operacje porównywania, dodawania i odejmowania zleceń. Upraszcza to również operację porównywania samych znormalizowanych liczb. Im więcej cyfr przypisano mantysie, tym większa dokładność reprezentacji liczb. Im więcej cyfr zajmuje zamówienie, tym szerszy jest zakres od najmniejszej niezerowej liczby do największej liczby możliwej do przedstawienia w komputerze w danym formacie.

Podobnie jak w przypadku liczb całkowitych, systemy oprogramowania mogą wykorzystywać kilka typów danych, które implementują model zmiennoprzecinkowy. Na przykład język SI wykorzystuje trzy typy danych o różnych „długościach”. Szesnastobitowe kompilatory dla komputerów PC zgodnych z IBM implementują te typy w następujący sposób:

Float – 4 bajty, z czego 23 bity mantysy i 8 bitów wykładnika

(od 3,4*10 -38 do 3,4*10 38, zapewnia dokładność z 7 cyframi znaczącymi);

Double – 8 bajtów, z czego 52 bity mantysy i 11 bitów rzędu

(od 1,7*10 -308 do 1,7*10 308, zapewnia dokładność 15 cyfr);

Long double – 10 bajtów, z czego 65 bitów mantysy i 14 bitów porządku

(od 3,4 * 10 -4932, zapewnia 19-cyfrową precyzję).

Koncepcja typu danych. Powiedzieliśmy już, że minimalną adresowalną jednostką pamięci jest bajt, ale reprezentowanie liczby wymaga więcej miejsca. Takie liczby zajmą grupę bajtów, a adresem liczby będzie adres pierwszego bajtu grupy. W rezultacie bajt pobrany losowo z pamięci nie będzie mówił nic o tym, jakiego obiektu informacyjnego jest częścią - liczby całkowitej, liczby zmiennoprzecinkowej czy polecenia. Z tego możemy wywnioskować, że oprócz zadania reprezentowania danych w kodzie binarnym, równolegle rozwiązuje się problem odwrotny - interpretację kodów, tj. Jak przywrócić oryginalne dane z kodów.

Do reprezentacji podstawowych typów informacji (liczby całkowite, liczby zmiennoprzecinkowe, znaki, dźwięki itp.) w systemach programistycznych stosuje się typy danych. Każdy typ danych definiuje logiczną strukturę prezentacji i interpretacji odpowiednich danych.

Przykładem systemu liczb mieszanych jest binarny system dziesiętny . W systemie liczbowym BCD na każdą cyfrę dziesiętną przydzielane są 4 cyfry binarne, ponieważ maksymalna cyfra dziesiętna 9 jest kodowana jako 1001 2. Na przykład,

925 10 = 1001 0010 0101 2-10 .

Tutaj kolejne poczwórne (tetrady) cyfr binarnych reprezentują odpowiednio cyfry 9, 2 i 5 zapisu dziesiętnego.

Chociaż notacja BCD wykorzystuje tylko cyfry 0 i 1, notacja BCD różni się od binarnej reprezentacji danej liczby. Na przykład kod binarny 1001 0010 0101 odpowiada liczbie dziesiętnej 2341, a nie 925.

Jeżeli P=Q l (l jest liczbą całkowitą dodatnią), reprezentacja dowolnej liczby w systemie liczb mieszanych jest identyczna z obrazem tej liczby w systemie liczb o podstawie Q. Przykładami takiego systemu liczb mieszanych są binarne ósemkowe i binarny szesnastkowy.

Na przykład,

A2 16 = 1010 0010 2 = 1010 0010 2-16

REPREZENTACJA LICZB UJEMNYCH W FORMACIE STAŁYCH PUNKTÓW (KROPKI)

Aby uprościć operacje arytmetyczne, komputery używają specjalnych kodów binarnych do reprezentowania liczb ujemnych: odwrotności i dopełnienia. Używając tych kodów, uproszczono określenie znaku wyniku operacji podczas dodawania algebraicznego. Operacja odejmowania (lub dodawania algebraicznego) sprowadza się do arytmetycznego dodawania operandów, dzięki czemu łatwiej jest uzyskać oznaki przepełnienia siatki bitów. W rezultacie urządzenia komputerowe wykonujące operacje arytmetyczne są uproszczone.

Wiadomo, że jednym ze sposobów wykonania operacji odejmowania jest zamiana znaku odejmowania na jego przeciwny i dodanie go do odejmowania:

A - B = A + (- B)

Zastępuje to operację odejmowania arytmetycznego operacją dodawania algebraicznego, którą można wykonać za pomocą sumatorów binarnych.

Do maszynowej reprezentacji liczb ujemnych stosuje się kody bezpośredni, dodatkowy, odwrotny. Uproszczoną definicję tych kodów można podać w następujący sposób. Jeśli liczba A w zwykłym kodzie binarnym wynosi bezpośredni kod binarny, przedstaw jako

[A] pr = 0.an an-1 an-2.....a1 a0,

wówczas liczba -A w tym samym kodzie jest reprezentowana jako

[-A]pr = 1.an an-1 an-2.....a1 a0,

i w odwracać(odwrotny) kod, który będzie wyglądał następująco:

[-A]rev = 1.an an-1 an-2.....a1 a0,

ai = 1 jeśli ai = 0,

ai = 0, jeśli ai = 1,

A ja - cyfra I-ta cyfra liczby binarnej. W rezultacie przy przejściu z kodu bezpośredniego do kodu odwrotnego wszystkie cyfry bitów liczby Matisse'a są odwracane.

Następnie liczba -A w dodatkowy kod jest reprezentowany jako

[-A]dodaj = [-A]obrót + 1

Zatem, aby otrzymać kod dopełniający liczb ujemnych, należy najpierw odwrócić cyfrową część pierwotnej liczby, uzyskując jej odwrotny kod, a następnie dodać jedynkę do najmniej znaczącej cyfry cyfrowej części liczby.

Kod uzupełniający danego numeru uzyskuje się poprzez zastąpienie go nowym numerem, uzupełniający ją do liczby równej wadze cyfry następującej po najbardziej znaczącej cyfrze siatki bitów używanej do przedstawienia mantysy liczby w formacie stałoprzecinkowym. Dlatego taki kod liczbowy nazywany jest dodatkowym.

Wyobraźmy sobie, że mamy tylko dwie cyfry reprezentujące liczby w systemie dziesiętnym. Wtedy maksymalna liczba, jaką można przedstawić, będzie wynosić 99, a waga trzeciej nieistniejącej najwyższej cyfry wyniesie 10 2, tj. 100. W tym przypadku dla liczby 20 liczbą uzupełniającą będzie 80, co stanowi uzupełnienie 20 do 100 (100 - 20 = 80). Dlatego z definicji odejmowanie

można zastąpić dodatkiem:

Tutaj najwyższa jednostka wykracza poza przydzieloną siatkę bitów, w której pozostaje tylko liczba 30, tj. Wynik odjęcia liczby 20 od 50.

Przyjrzyjmy się teraz podobnemu przykładowi liczb przedstawionych w 4-bitowym kodzie binarnym. Znajdźmy dodatkową liczbę dla 0010 2 = 210. Od 0000 odejmiemy 0010, otrzymamy 1110, czyli dodatkowy kod 2. Cyfra pokazana w nawiasach kwadratowych w rzeczywistości nie istnieje. Ale ponieważ mamy siatkę 4-bitową, w zasadzie nie da się wykonać takiego odejmowania, a tym bardziej staramy się pozbyć odejmowania. Zatem dodatkowy kod liczbowy uzyskuje się w sposób opisany wcześniej, tj. najpierw otrzymują odwrotny kod liczby, a następnie dodają do niego 1. Zrobiwszy to wszystko z naszą liczbą (2), nietrudno zauważyć, że uzyskana zostanie podobna odpowiedź.

Podkreślmy to Uzupełnienie do dwójki i kody uzupełnienia do dwójki są używane tylko do reprezentowania ujemnych liczb binarnych w postaci stałoprzecinkowej. Liczby dodatnie w tych kodach nie zmieniają swojego wizerunku i są reprezentowane tak, jak w kodzie bezpośrednim.

Zatem cyfry liczby ujemnej w kod bezpośredni pozostają niezmienione, a jeden jest zapisany w części znakowej.

Spójrzmy na proste przykłady.

Siedem w kodzie bezpośrednim jest reprezentowane w następujący sposób:

pr = 0,0001112

Liczba -7 w kodzie bezpośrednim:

[-7]pr = 1,0001112,

i w odwrotnym kodzie będzie to wyglądać

[-7]obr. = 1,1110002,

te. jedynki zastępuje się zerami, a zera jedynkami. Ta sama liczba w uzupełnieniu do dwójki to:

[-7]dodaj = 1,1110012.

Rozważmy jeszcze raz, jak procedura odejmowania, wykorzystująca reprezentację odejmowania w kodzie uzupełnienia do dwójki, sprowadza się do procedury dodawania. Odejmij liczbę 7 od 10: 10 - 7 = 3. Jeśli oba operandy są przedstawione w kodzie bezpośrednim, wówczas procedura odejmowania jest wykonywana w następujący sposób:

-1.000111

A jeśli jest to możliwe do zrozumienia, tj. -7, przedstawiony w kodzie uzupełnienia do dwóch, wówczas procedura odejmowania sprowadza się do procedury dodawania:

+ 1.111001

1 0.000011 = 310.

Obecnie komputery zazwyczaj używają kodu uzupełnienia do dwóch do reprezentowania liczb ujemnych w formacie stałoprzecinkowym.

Forma reprezentacji liczb w maszynach cyfrowych to zbiór reguł pozwalających ustalić wzajemną zgodność pomiędzy zapisem liczby a jej ilościowym odpowiednikiem.

Maszynowy (automatyczny) obraz liczby to jest reprezentacja liczby w siatce bitów maszyny cyfrowej. Symbol obrazu maszynowego liczby, na przykład A, będzie reprezentowany jako [A].

Ze względu na ograniczoną długość słów maszynowych zbiór liczb, które można przedstawić w maszynie, jest skończony. Porównań pomiędzy różnymi formami reprezentacji liczb w komputerach dokonuje się zwykle na podstawie szacunków zakres i dokładność reprezentacji liczb.

W codziennej praktyce najczęstszą formą przedstawiania liczb jest ciąg cyfr oddzielonych przecinkiem na części całkowite i ułamkowe. Liczby przedstawione w tej formie nazywane są liczbami z naturalnym przecinkiem lub liczbami w postaci naturalnej. W postaci naturalnej liczbę zapisuje się w postaci naturalnej, np. 12560 jest liczbą całkowitą, 0,003572 jest ułamkiem właściwym, 4,89760 jest ułamkiem niewłaściwym.

Przy przedstawianiu liczb w tej postaci konieczne jest, aby każda liczba wskazywała położenie swojego przecinka w siatce bitów przeznaczonej do reprezentowania liczby w maszynie, co wymaga dodatkowych kosztów sprzętu w dość dużej wysokości. Dlatego w komputerach rozpowszechniły się dwie inne formy reprezentacji: ze stałym i zmiennoprzecinkowym (kropką).

Nie ma potrzeby wskazywania pozycji przecinka, jeśli miejsce przecinka w siatce bitowej maszyny jest z góry ustalone raz na zawsze. Ta forma przedstawiania liczb nazywa się reprezentacją za pomocą stały przecinek (kropka).

Ponieważ liczby mogą być dodatnie i ujemne, format (siatka bitowa) obrazu maszyny jest podzielony na kultowa część I pole liczbowe. Pole liczbowe zawiera obraz samego numeru, który umownie nazwiemy mantysa takty muzyczne. Do zakodowania znaku liczby wykorzystuje się najbardziej znaczącą cyfrę siatki bitów zarezerwowaną dla obrazu liczby binarnej, a pozostałe cyfry przydzielane są na mantysę liczby. Pozycja przecinka w siatce bitów jest ściśle ustalona, ​​zwykle albo na prawo od najniższej cyfry mantysy, albo na lewo od najwyższej. W pierwszym przypadku liczba jest przedstawiana jako liczba całkowita, w drugim jako ułamek właściwy. Obecnie zdecydowana większość komputerów reprezentuje liczby całkowite w formacie stałoprzecinkowym.

Część znakowa zawiera informację o znaku liczby. Przyjmuje się, że znak liczba dodatnia "+" reprezentowany przez symbol 0, a znak jest liczbą ujemną "-" reprezentowany przez symbol 1.

Na przykład w kodzie binarnym przy użyciu siatki 6-bitowej liczbę 7 w postaci stałoprzecinkowej można przedstawić jako:

gdzie cyfra po lewej stronie kropki jest znakiem liczby, a pięć cyfr po prawej stronie kropki to mantysa liczby w kodzie bezpośrednim. To o to tu chodzi przecinek jest ustawiony na prawo od najmniej znaczącej cyfry, a punkt na obrazie liczby w tym przypadku po prostu oddziela bit znaku od mantysy liczby.

W przyszłości ten typ reprezentacji liczby w postaci maszynowej będzie często używany w przykładach. Możesz użyć innej formy przedstawienia liczby w postaci maszynowej:

gdzie bit znaku jest oddzielony nawiasami kwadratowymi.

Liczba cyfr w siatce bitów przypisanych do reprezentowania mantysy liczby określa zakres i dokładność reprezentacji liczby stałoprzecinkowej. Maksymalna liczba binarna w wartości bezwzględnej jest reprezentowana przez jedyneki we wszystkich cyfrach z wyjątkiem znaku jedynki, tj. dla liczby całkowitej

|A|max = (2 (n -1) - 1),

Gdzie N- całkowita długość siatki bitów. W przypadku siatki 16-bitowej

|A| maks. = (2 (16-1) - 1) = 32767 10,

te. Zakres reprezentacji liczb całkowitych w tym przypadku będzie wynosić od +3276710 do -3276710.

W przypadku, gdy przecinek jest ustawiony na prawo od cyfry mantysy najniższego rzędu, tj. w przypadku liczb całkowitych są to liczby, których moduł jest większy niż

(2(n-1) - 1) i mniej niż jeden nie są reprezentowane w postaci stałoprzecinkowej. Liczby, których wartość bezwzględna jest mniejsza niż jedna z najmniej znaczących cyfr siatki bitów, nazywane są w tym przypadku zerem maszynowym. Zero ujemne jest zabronione.

W niektórych przypadkach, gdy możliwe jest operowanie tylko w jednostkach liczb, do reprezentacji liczby przydzielana jest cała siatka bitów, łącznie z najbardziej znaczącym bitem, co pozwala na rozszerzenie zakresu reprezentacji liczb.