Docsity
Docsity

Przygotuj się do egzaminów
Przygotuj się do egzaminów

Studiuj dzięki licznym zasobom udostępnionym na Docsity


Otrzymaj punkty, aby pobrać
Otrzymaj punkty, aby pobrać

Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium


Informacje i wskazówki
Informacje i wskazówki

Kodowanie liczb całkowitych w systemach komputerowych, Prezentacje z Computer Science

Obszerne opracowanie z zakresu tematu

Typologia: Prezentacje

2019/2020

Załadowany 22.09.2020

Polanski_R
Polanski_R 🇵🇱

4.6

(107)

353 dokumenty

1 / 25

Toggle sidebar

Ta strona nie jest widoczna w podglądzie

Nie przegap ważnych części!

bg1
Architektura komputerów, Informatyka, sem.III
Kodowanie liczb całkowitych
w systemach komputerowych
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19

Podgląd częściowego tekstu

Pobierz Kodowanie liczb całkowitych w systemach komputerowych i więcej Prezentacje w PDF z Computer Science tylko na Docsity!

Architektura komputerów, Informatyka, sem.III

Kodowanie liczb całkowitych

w systemach komputerowych

Architektura komputerów, Informatyka, sem.III

System pozycyjny

Systemy addytywne – znaczenie historyczne

Systemy pozycyjne

r – podstawa systemu liczbowego ( radix )

● (^) A – wartość liczby ● (^) a - cyfra ● (^) i – pozycja cyfry np. −11, dziesiętnie = −1101, dwójkowo A =∑ i =−∞ ∞

r

i i

a

i

Architektura komputerów, Informatyka, sem.III

Podstawa systemu liczbowego

Podstawa systemu r ( radix )

● (^) ma stałą wartość dla wszystkich pozycji cyfry ( fixed-radix ) dziesiętny, szesnastkowy, ósemkowy, dwójkowy ● (^) może mieć różną wartość dla różnych pozycji ( mixed-radix ) czas: godzina, minuta, sekunda r = (24,60,60) kąt: stopnie, minuty, sekundy r = (360,60,60) factoradic r = (... 5!, 4!, 3!, 2!, 1!) = (... 120, 24, 6, 2, 1) 54321 factoradic = 719 dziesiętnie 5×5! + 4×4! + 3×3! + 2×2! + 1×1! = 719 primoradic r = (... 11, 7, 5, 3, 2, 1) 54321 primoradic = 69 dziesiętnie 5×7 + 4×5 + 3×3 + 2×2 + 1×1 = 69 ● (^) nie musi być liczbą naturalną (liczby ujemne, wymierne, zespolone) 54321

- = − 462810 dziesiętnie

Architektura komputerów, Informatyka, sem.III

Cyfry systemu liczbowego

System o podstawie r , który wykorzystuje standardowy

zestaw cyfr [0.. r -1] to system nieredundantny

● (^) dwójkowy → 0, 1 ● (^) dziesiętny → 0... 9 ● (^) szesnastkowy → 0... F

System, który posiada więcej cyfr niż r jest systemem

redundantnym

● (^) dwójkowy → 0,1,2 lub -1,0, ● (^) dziesiętny → 0... 9 ♠, ♣, ♥, ♦

W systemach redundantnych reprezentacja liczby nie

jest unikalna

● (^) dwójkowy [0,1,2]: 1000 = 8 dziesiętnie i 0120 = 8 dziesiętnie

Architektura komputerów, Informatyka, sem.III

Kodowanie liczb całkowitych

W standardowym systemie liczbowym o podstawie r ,

za pomocą n-cyfrowej liczby:

można reprezentować liczby z zakresu [0 ... r

n

-1]

liczba różnych reprezentacji wynosi r

n ● (^) system dwójkowy: 8-bitów, zakres 0...255, różnych liczb 256 ● (^) system piątkowy: 3-cyfry, zakres 0...124, różnych liczb 125

Ile cyfr potrzeba na zapis liczb w zakresie [0 ... max]?

np. do zapisania 50000 liczb w kodzie dwójkowym potrzeba:

log 2 50000 = 15.61 → ( ceil ) → 16 cyfr (bitów) log 2 49999+1 = 16.61 → ( floor ) → 16 cyfr (bitów)

n = ceil [log

r

 max  1 ]= floor [log

r

max ] 1

Architektura komputerów, Informatyka, sem.III

Wybór optymalnej podstawy

Kryteria:

● (^) możliwie krótka reprezentacja (małe n) i mało cyfr (małe r) ● (^) wygodna implementacja fizyczna ● (^) „proste“ algorytmy arytmetyczne

Jaki system liczbowy (o jakiej podstawie) będzie

,,najlepszy" do kodowania liczb w zakresie [0...max]?

Kryterium matematyczne (jedno z wielu):

E(r) = r * n

gdzie r – podstawa systemu dla n-cyfrowej liczby Wymagany jest kompromis pomiędzy małymi wartościami r (łatwa implementacja) i n (efektywny zapis)

Architektura komputerów, Informatyka, sem.III

Naturalny kod binarny (NKB, NBC )

Zakładamy, że pod pojęciem NKB będziemy rozumieli

system stało-pozycyjny o podstawie 2 i cyfrach 0 i 1

n-bitową reprezentację liczb nieujemnych [0 ... max]

4-bity: zakres 0 ... 2 4 -1 → 0 ... 15 (1 cyfra hex) 8-bitów: zakres 0 ... 2 8 -1 → 0 ... 255 (2 cyfry hex) 16-bitów: zakres 0 ... 2 16 -1 → 0 ... 65 535 32-bity: zakres 0 ... 2 32 -1 → 0 ... 4 294 967 295 64-bity: zakres 0 ... 2 64 -1 → 0 ... 18 446 744 073 709 551 615

NKB nie pozwala na zapis liczb ujemnych

a

n − 1

a

n

... a

1

a

0 =∑ i = 0 n − 1

i

a

i

Architektura komputerów, Informatyka, sem.III

Kody specjalne

Kod Graya – dwójkowy kod niepozycyjny

że każde dwa kolejne słowa kodowe różnią się tylko stanem

jednego bitu.

kod cykliczny – ostatni i pierwszy wyraz tego kodu także

spełniają zasadę różnicy tylko na jednym bicie

zastosowanie: unikanie stanów przejściowych w układach

elektroniki cyfrowej (przetworniki analogowo-cyfrowych,

czujniki położenia/obrotu, etc.)

wartość Gray 0 0 0 0 1 0 0 1 2 0 1 1 3 0 1 0 4 1 1 0 5 1 1 1 6 1 0 1 7 1 0 0

Architektura komputerów, Informatyka, sem.III

Kodowanie liczb ujemnych całkowitych

Mapowanie liczb ujemnych na zakres NKB

Intuicyjna reprezentacja liczb ujemnych

Proste operacje arytmetyczne (dodawanie i negacja)

Kod znak-moduł: ZM, (ang. SM )

Kod z przesunięciem (ang. Bias , Excess-N )

Kod uzupełnieniowy: U2, U1, (ang. 1C , 2C )

Architektura komputerów, Informatyka, sem.III

Kod znak-moduł (ZM)

Najstarsze i najprostsze rozwiązanie

W kodzie dwójkowym:

● (^) najbardziej znaczący bit liczby służy do kodowania znaku (1 – ujemna, 0 – dodatnia) ● (^) reprezentowane są liczby z zakresu [− 2 n-1+1, 2n-1− 1 ]

Zalety:

● (^) intuicyjna reprezentacja ● (^) symetryczny zakres ● (^) proste operacja negacji

Wady:

● (^) skomplikowane dodawanie !!! ● (^) podwójna reprezentacja zera 49 DEC = 00110001 ZM − 49 DEC = 10110001 ZM

DEC = 00000000 ZM − 0 DEC = 10000000 ZM

Architektura komputerów, Informatyka, sem.III

Kody z przesunięciem (Bias, Excess-N)

Zakres [−N, +P] jest mapowany na [0, N+P]

Polega na dodaniu przesunięcia (bias=N) do liczby

Zalety:

● (^) intuicyjna reprezentacja ● (^) liniowe mapowanie – łatwe operacje porównania

Wady:

● (^) dodawanie/odejmowanie wymaga korekcji wyniku ● (^) mnożenie i dzielenie dość skomplikowane [ −4, +11 ] → [ 0, 15 ], bias = 4 −1 → 3

Architektura komputerów, Informatyka, sem.III

n-bitowy kod Excess-

n-

W n-bitowym kodzie dwójkowym Excess-

n-

reprezentowane są liczby z przedziału [− 2

n-

n-

−1]

przesunięcie (bias) wynosi 2

n-

(MSB = 1, pozostałe bity 0)

najbardziej znaczący bit liczby powala poznać znak

(0 – ujemna, 1 – dodatnia lub 0) – przeciwnie do ZM

dodanie lub odjęcie przesunięcia wymaga jedynie operacji

na najbardziej znaczącym bicie liczby (korekta na MSB)

negacja liczby polega na negacji wszystkich bitów i dodaniu

jedynki do całości

16 DEC → 16 DEC

  • bias = 16 DEC
  • 128 DEC = 10010000 excess-
  • DEC → - DEC + bias = - DEC + 128 DEC = 01110000 excess-

Architektura komputerów, Informatyka, sem.III

Kody z przesunięciem – arytmetyka

Operacje dodawania i odejmowania wymagają

korekcji wyniku:

X = x + bias

Y = y + bias

X + Y→ x + bias + y + bias = x + y + 2*bias → (X + Y) − bias

X − Y→ x + bias − y − bias = x − y + 0*bias → (X − Y) + bias

Operacje ±bias to zmiana tylko bitu MSB

Uwaga na przekroczenie zakresu!

Architektura komputerów, Informatyka, sem.III

Kody uzupełnieniowe

Zakres [−N, +P] jest mapowany na [0, N+P]

Reprezentacja liczb dodatnie jest bez zmian

Postać liczb ujemnych oblicza się jako uzupełnienie

do stałej uzupełniania M → M = N+P+

−x = M − x

Zalety:

proste operacje arytmetyczne, identyczna jak w NKB !!!

Wady:

mało intuicyjna reprezentacja (?)

[ −4, +11 ] → [ 0, 15 ], M = 16 −1 → 15