Architektura Komputerów/Wykład 2: Dane: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Akokno (dyskusja | edycje)
Nie podano opisu zmian
Akokno (dyskusja | edycje)
Nie podano opisu zmian
Linia 110: Linia 110:
|valign="top" width="500px"|[[Grafika:ASK_M2_S15.png]]
|valign="top" width="500px"|[[Grafika:ASK_M2_S15.png]]
|valign="top"|  
|valign="top"|  
...
Kody całkowitoliczbowe charakteryzują się zestawem własności, które decydują o wygodzie ich stosowania. Istotne własności to m.in.:
 
Reprezentacja zera – wpływa na łatwość wykrywania wartości 0 przy użyciu prostego układu logicznego.
 
Reprezentacja znaku – wpływa na łatwość rozróżnienia liczb ujemnych od dodatnich.
 
Operacja, jaką należy wykonać w celu zmiany znaku liczby – może to być prosta operacja logiczna, prosta lub złożona operacja arytmetyczna.
 
Łatwość wykonywania operacji arytmetycznych – dodawanie i odejmowanie w U2 jest realizowane tak samo, jak w NKB. Mnożenie i dzielenie w U2 jest niewygodne, za to liczby zapisane w kodzie znak-moduł można mnożyć i dzielić niemal tak samo, jak w NKB.
|}
|}
<hr width="100%">
<hr width="100%">

Wersja z 10:48, 5 paź 2006


...


...


Komputer musi być zaprojektowany tak, aby był zdolny do przetwarzania danych zgodnie z potrzebami użytkownika. Współczesne komputery są używane do przetwarzania danych różnych typów – liczbowych, logicznych, tekstowych, a także obrazów i dźwięków.


Współczesne komputery działają w systemie binarnym. Wszystkie dane, na których operuje komputer, są zapisane w postaci ciągów cyfr binarnych – bitów (BInary Digit), interpretowanych najczęściej jako liczby binarne.

Wszelkie dane o charakterze nieliczbowym muszą być zapisane (zakodowane) w postaci liczb lub grup liczb.


Dane alfanumeryczne – tekstowe mają postać znaków pisarskich – liter, cyfr, znaków przestankowych i innych symboli . W komputerze są one reprezentowane przez liczby, określające pozycję danego symbolu w tablicy kodowej. We współczesnych komputerach używa się kilku standardów kodowania znaków pisarskich.

Kod ASCII został opracowany w pierwszej połowie XX wieku dla urządzeń dalekopisowych. Zawiera on cyfry, znaki przestankowe, podstawowe symbole matematyczne oraz małe i wielkie litery alfabetu łacińskiego, mieszczące się na 128 pozycjach kodowych.

Kody rodziny EBCDIC są używane w systemach firmy IBM. Bazują one na binarnym kodowaniu liczb dziesiętnych reprezentujących pozycje kodowe znaków.

Kod UNICODE jest uniwersalnym kodem znakowym, umożliwiającym reprezentację wszystkich znaków pisarskich zapisu fonetycznego (głoskowego) używanych na całym świecie. Liczba pozycji kodowych jest praktycznie nieograniczona, obecnie jest zdefiniowanych kilkadziesiąt tysięcy znaków


...


Symbole ASCII o kodach 0..31 nie są znakami pisarskimi, lecz kodami formatującymi oraz kodami sterującymi wymianą informacji. Wśród nich znajdują się m.in. kody: CR – przejście na początek wiersza, LF – przejście do następnego wiersza, FF – rozpoczęcie nowej strony, HT – tabulacja pozioma, BSP – cofnięcie o jeden znak, BEL – sygnał dźwiękowy, VT – tabulacja pionowa i wiele innych.


Na bazie kodu ASCII zaprojektowano wiele kodów rozszerzonych, zawierających 256 pozycji kodowych. W kodach tych pierwsze 128 pozycji jest identyczne, jak w kodzie ASCII, a następne 128 pozycji zawiera znaki dodatkowe, np. litery akcentowane, rozszerzony zestaw symboli matematycznych, litery alfabetów narodowych. Istnieje wiele kodów tej rodziny, używanych w różnych częściach świata. W Polsce najpowszechniej używa się kodów ISO8859-2 oraz Microsoft CP1250. Jeszcze kilkanaście lat temu w naszym kraju używano ponad 12 różnych standardów kodowanie polskich znaków.


...


...


...


Najprostszy typ danych stanowią dane logiczne. Mogą one przyjmować dwie wartości. Bajtowe adresowanie danych używane w komputerach oraz fakt, że wiele komputerów traktuje jako podstawowy format danych słowo 32-bitowe powodują, że dane logiczne są zwykle zapisywane w postaci bajtów lub słów, pomimo, że do ich zapisu wystarczyłby pojedynczy bit.

Należy zwrócić uwagę na reprezentację wartości PRAWDA w różnych językach programowania. Różne wzorce bitowe używane w różnych językach oraz korzystanie z operatorów (np. negacji) bitowych zamiast logicznych mogą być przyczyną błędów w programach, w których poszczególne moduły są pisane w różnych językach.


W dalszej części do opisu różnych reprezentacji danych liczbowych będziemy posługiwali się założeniem, że dane reprezentowane są przez słowo komputera, w którym poszczególne bity zostały ponumerowane od prawej do lewej strony.

W naturalnym kodzie binarnym numer bitu jest równy wykładnikowi jego wagi binarnej.

Zapis BCD polega na oddzielnym zakodowaniu w postaci binarnej (w kodzie NKB) każdej cyfry zapisu dziesiętnego, w postaci czterech bitów (tetrady). Zapis ten był dawniej używany do reprezentacji danych w języku COBOL. Obecnie jest on bardzo rzadko stosowany, głównie w mikrokontrolerach.


Ekran przedstawia kilka najważniejszych zapisów liczb ze znakiem.

Zapis U2 jest najczęściej stosowanym zapisem liczb całkowitych. Jest on podobny do NKB, z tą różnicą, że najbardziej znaczący bit ma wagę ujemną. Typ int jest we współczesnych komputerach implementowany jako zapis U2.

Zapis U1 był popularny kilkadziesiąt lat temu. Zapis ten jest podobny do U2, ale wartość bezwzględna najbardziej znaczącego bitu jes tu o jeden mniejsza. Obecnie wyszedł on z użycia.

Zapis znak-moduł wydaje się być najbardziej intuicyjnym – jeden bit jest interpretowany jako znak liczby, pozostałe bity – jako wartość bezwzględna w kodzie NKB. Jest on jednak niewygodny dla jednostek arytmetycznych i współczesne komputery nie obsługują danych całkowitoliczbowych w tym zapisie.

Zapis spolaryzowany umożliwia reprezentację licz ze znakiem jako licz bez znaku, z odpowiednim przesunięciem wartości 0. Liczby ujemne zapisywane są jako bliskie zeru,a zero – jako wartość w połowie zakresu reprezentacji NKB. Zapis powstaje przez dodanie do zapisywanej wartości stałej – podkładu, a następnie zapisanie tak uzyskanej liczby w kodzie NKB. Jako wartość podkładu przyjmuje się zwykle wartość leżącą tuż poniżej połowy zakresu w NKB.


Kody całkowitoliczbowe charakteryzują się zestawem własności, które decydują o wygodzie ich stosowania. Istotne własności to m.in.:

Reprezentacja zera – wpływa na łatwość wykrywania wartości 0 przy użyciu prostego układu logicznego.

Reprezentacja znaku – wpływa na łatwość rozróżnienia liczb ujemnych od dodatnich.

Operacja, jaką należy wykonać w celu zmiany znaku liczby – może to być prosta operacja logiczna, prosta lub złożona operacja arytmetyczna.

Łatwość wykonywania operacji arytmetycznych – dodawanie i odejmowanie w U2 jest realizowane tak samo, jak w NKB. Mnożenie i dzielenie w U2 jest niewygodne, za to liczby zapisane w kodzie znak-moduł można mnożyć i dzielić niemal tak samo, jak w NKB.


...


...


...


...


...


...


...


...


...


...


...


...


...


...


...