You are on page 1of 34

2 Дигитална логика

1.6 Бинарни кодови

Интеракцијата меѓу човекот и компјутерот најчесто се одвива преку


тастатура. На секоја притисната дирка одговара алфанумерички
карактер или управувачки знак (табулатор, CR, LF и др.). ASCII кодот
е еден начин на кодирање на дирките од тастатурата.

Дигиталните системи содржат електронски прекинувачи кои може да


се наоѓаат само во две состојби, па за нивно претставување погоден е
бинарниот систем. За изведување на интерните операции
компјутерите користат бинарни броеви но комуникацијата со
корисникот се одвива во декаден броен систем. За поедноставна
комуникација секој декаден број се претставува со низа од бинарни
цифри. Овој начин на претставување на декадните броеви се нарекува
бинарно кодирање.

Покрај неведените постојат и други причини за кодирање, како што се


шифрирањето на податоците, откривање и поправање на грешки кои
се јавуваат при пренос на информации.

Бинарните кодови вообичаено имаат иста должина на кодните


зборови. Таквите бинарни кодови се нарекуваат рамномерни бинарни
кодови. Коден збор е група на симболи со која се претставува некоја
информација.

Дел од бинарните кодови се тежински, односно секој бит има


одредена тежина, а дел се нетежински. Еден пример за тежински код е
бинарниот броен систем. Кај нетежинските бинарни кодови битовите
немаат одредена тежина туку важен е распоредот на битовите во
кодниот збор. Кај овие кодови врската меѓу декадниот број и кодниот
збор се дава преку математички равенки или специјални кодни
таблици.

 BCD кодови на броевите

Кај дигиталните инструменти има потреба за внесување и


прикажување на податоците во декаден облик кој корисниците
претпочитуваат да го користат. За таа цел се развиени BCD кодовите.
BCD (Binary Coded Decimal) е кратенка за бинарно кодирани декадни
броеви.
Бројни системи и кодови 3

За да може да се претстават 10 декадни цифри потребни се 4 бита. 3


бита не се доволни бидејќи 2 3=8<10. Со 4 бита може да се претстават
24=16 декадни цифри што значи дека 6 кода ќе останат
неискористени, па ова кодирање е редундантно.

Во општ случај за бинарно кодирање на N броја (0,…,N-1) потребни


се n бита каде n= log2N, односно 2n=N. За кодирање може да се
користи било кое произволно доделување на комбинации од битови
на цифрите така да има 16!/6! или приближно 2,9*10 10 можни кодови.
Само неколку од овие кодови се користат бидејќи аритметичките
операции во скоро сите кодови се тешки.

BCD кодот 8421 се нарекува природен BCD (NBCD) код. 8421 се


ознаки за тежините на четирите бита со кои се кодира секоја цифра од
декадниот број. Кодот е прикажан во табела 1.8. За цифрите од 0 до 9
бинарното претставување на цифрата е исто со (8,4,2,1) кодот на
цифрата.

Табела 1.8: NBCD код

децимална цифра (8,4,2,1) NBCD код


0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001

Кај BCD кодирањето секоја декадна цифра се кодира бинарно, за


разлика од бинарното претставување на декадните броеви. На пример,
декадниот број 12 се преставува бинарно како 1100, а BCD кодот на
бројот 12 е
0001 0010
1 2
Собирањето на NBCD кодови се одвива според правилата:
4 Дигитална логика

 на секој нибл (4 бита, тетрада) се додава 0110, односно


бинарната вредност на декадниот број 6
 добиениот бинарен број се собира со вториот собирок
следејќи ги правилата за бинарно собирање
 се одзема бинарната вредност на 6 од NBCD цифрите
(тетрадите) кај кои не се јавил пренос.

Со други зборови, собирањето на NBCD броевите е исто како кај


бинарните броеви се додека сумата е 9 или помала. Кога сумата е
поголема од 9 резултатот се корегира со додавање на бројот 6.

На пример, собирањето на 3610= 0011 0110NBCD и 9210=1001 0010NBCD се


изведува на следниот начин

0011 0110 36
+0110 +0110 +6
_________________
1001 1100
+1001 0010 +92
__________________
1 0010 1110
-0110 -6
__________________
0001 0010 1000 128

При собирање на броевите 46 10=0100 0110NBCD и 9410=1001 0100NBCD се


јавува пренос кај двете NBCD цифри па не е потребно да се одземе
бинарната вредност на 6 од ниедна цифра

0100 0110 46
+0110 +0110 +6
_________________
1010 1100
+1001 0100 +94
__________________
1 0011 1 0000

+1
__________________
0001 0100 0000 140
Бројни системи и кодови 5

При одземање на броевите 9210=1001 0010NBCD и 3610=0011 0110NBCD


кај тетрадата во која се позајмува се одзема  6

0112
  0 12
1001 0010 92
- 0011 0110 -36
_________________
0101 1100
-0110
__________________
0101 0110 56

 Седумсегментен код

Некои дигитални уреди ги прикажуваат податоците преку индикатори


со LED диоди. Индикаторот се состои од седум сегменти. Секоја од
10-те декадни цифри се претставува со комбинација од осветлени и
неосветлени сегменти.

Седумсегментните индикатори се произведуваат со заедничка анода


или со заедничка катода. Во табелата 1.9 се претставени
седумсегментните кодови за индикатори изведени со заедничка анода
или со заедничка катода.
Табела 1.9: Седумсегментен код

дисплеј со заедничка дисплеј со заедничка


децимална цифра катода анода
abcdefg abcdefg
0 1111110 0000001
1 0110000 1001111
2 1101101 0010010
3 1111001 0000110
4 0110011 1001100
5 1011011 0100100
6 1011111 0100000
7 1110000 0001111
8 1111111 0000000
9 1111011 0000100

На сликата 1.1 е претставен индикатор за седумсегментен код.


6 Дигитална логика

f b
g

e c
d

слика 1.1: Индикатор за седумсегментен код

 Тежински и нетежински кодови

Кај тежинските кодови секоја позиција во кодот има определена


тежина. Нека тежините на 4-те позиции за 4-битен тежински код се
означат со t3, t2, t1 и t0. Децималната вредност на кодниот збор b 3b2b1b0
се добива од збирот b3t3+b2t2+b1t1+b0t0.

Ако сите тежини на еден тежински код се позитивни тогаш тој се


нарекува позитивен тежински код. На пример, кодовите (5,3,2,1),
(7,4,2,1) и (4,2,2,1) се позитивни тежински кодови. Кодовите се
претставени во табела 1.10.

Табела 1.10: (5,3,2,1) код

децимална (5,3,2,1) код (7,4,2,1) код (4,2,2,1) код


цифра
0 0000 0000 0000
1 0001 0001 0001
2 0010 0010 0010
3 0 1 0 0 или 0011 0011 0011
4 0101 0100 1000
5 1 0 0 0 или 0110 0101 0111
6 1 0 0 1 или 0111 0110 1100
7 1010 1000 1101
8 1 1 0 0 или 1011 1001 1110
9 1101 1010 1111
Бројни системи и кодови 7

Постојат и кодови каде некои од тежините се негативни. Тие се


наречени негативни тежински кодови. На пример, кодот (8,4,-2,-1) кој
е претставен во табела 1.11 е негативен тежински код.

Табела 1.11: (8,4,-2,-1) код

децимална цифра (8,4,-2,-1) код


0 00 0 0
1 01 1 1
2 01 1 0
3 01 0 1
4 01 0 0
5 10 1 1
6 10 1 0
7 10 0 1
8 10 0 0
9 11 1 1

Кај нетежинските кодови позицијата на цифрите не е поврзана со


одредена тежина. Примери за нетежински кодови се вишок 3 (exceed
3) и Грејовиот код (Gray code).

За да се добие вишок 3 кодот (табела 1.12) на декадната цифра се


додава 3, а потоа бројот се претвара во бинарен број. Аритметичките
операции собирање и одземање кога се користи кодот вишок 3 се
едноставни.
Табела 1.12: Вишок 3 код

децимална цифра вишок 3 код


0 0011
1 0100
2 0101
3 0110
4 0111
5 1000
6 1001
7 1010
8 1011
9 1100
8 Дигитална логика

Ако збирот на цифрите во декадна репрезентација е поголем од 9, во


вишок 3 кодот се јавува пренос кон следна цифра со поголема тежина.
Резултатот потоа се корегира со додавање 0011 (3 декадно) на двете
добиени цифри. На пример, при собирање на броевите 6 и 5
претставени во вишок 3 се јавува пренос кон цифра со поголема
тежина и се изведува корекција на резултатот

декадно собирање собирање во вишок 3 код


6 1001
+5 +1000
___ __________
11 1 0001
+0011 +0011 додавање 3
______________
пренос 0100 0100

Ако во вишок 3 се собираат цифри чиј збир во декадна репрезентација


е помал или еднаков на 9 резултатот треба да се корегира со одземање
на 0011. Овој случај е претставен со следниот пример

декадно собирање собирање во вишок 3 код


4 0111
+3 +0110
___ __________
7 1101
-0011 одземање 3
__________
1010
При одземање во кодот вишок 3 разликата се корегира со додавање
0011, како што е илустрирано со следниот пример

декадно одземање одземање во вишок 3 код


27 0101 1010
-11 -0100 0100
___ __________
16 0001 0110
+0011 +0011 додавање 3
______________
0100 1001
Бројни системи и кодови 9

Самокомплементирачки BCD кодови

Некои кодови имаат особина да кодниот збор на деветичниот


комплемент на некоја цифра (9-N) се добива како единечен
комплемент на неговата кодна репрезентација.

На пример, коден збор на декадниот број 7 во кодот (4,2,2,1) е 1101.


Деветичен комплемент на 7 е 2 (9-7=2) на кој одговара коден збор
0010. Кодот 0010 е единечен комплемент на 1101. Според тоа, кодот
(4,2,2,1) е самокомплементирачки.

Дефиниција 1.1: Нека b3b2b1b0 е коден збор на декадната цифра d i , а


b3 b2 b1 b0 е единечниот комплемент на кодниот збор. Кодот е
самокомплементирачки ако комплементот до 9 на декадната цифра (
9  d i ) може да се претстави со кодниот збор b3 b2 b1 b0 .

Пример 1.23: Дали кодот (2,4,2,1) е самокомплементирачки?

Нека го земеме кодот на бројот 3 како пример. Во (2,4,2,1) кодот


бројот 3 се претставува како 0011 (или 1001). Со комплементирање на
секоја бинарна цифра се добива 1100 (0110) што претставува (2,4,2,1)
код на бројот 6, кој всушност е дополнување на 3 до 9. Затоа, кодот
(2,4,2,1) е самокомплементирачки.

Децимална цифра (2,4,2,1) код


3 0011
9-3=6 1100

Пример 1.24: Дали NBCD кодот е самокомплементирачки?

Децимална цифра (8,4,2,1) код


5 0101
9-5=4 0100

Со комплементирање на секоја цифра од кодот 0101 за декадниот број


5 се добива 1010. Комплементот 1010 е различен од NBCD кодот 0100
на бројот 4. Затоа NBCD кодот не е самокомплементирачки.

Пример 1.25: Дали (8,4,-2,-1) кодот е самокомплементирачки?


10 Дигитална логика

Децимална цифра (8,4,-2,-1) код


7 10 0 1
9-7=2 01 1 0

Кодот (8,4,-2,-1) е самокомплементирачки.

Пример 1.26: Дали кодот вишок 3 е самокомплементирачки?

Децимална цифра вишок 3 код


1 0100
9-1=8 1011

Кодот вишок 3 е самокомплементирачки.

Теорема 1: Ако BCD кодот е самокомплементирачки тогаш збирот на


неговите тежини е 9. Важи и спротивното тврдење: ако збирот на
тежините на кодот е 9 тогаш кодот е самокомплементирачки.

Доказ: Нека кодот на бројот е b3b2b1b0 а тежините на кодот се


t 3 t 2 t1 t 0 . Тогаш декадната вредност на бројот е
d  b3 t 3  b2 t 2  b1t1  b0 t 0 .
Нека d е комплементот до 9 на декадниот број. За кодот да биде
самокомплементирачки кодниот збор за d треба да е еднаков на
единечниот комплемент на кодот b3b2b1b0 .

d  (1  b3 )t 3  (1  b2 )t 2  (1  b1 )t1  (1  b0 )t 0
 t 3  t 2  t1  t 0  (b3 t 3  b2 t 2  b1t1  b0 t 0 )
 t 3  t 2  t1  t 0  d
Следи дека t 3  t 2  t1  t 0  9 .

Пример 1.27: Да се претстави бројот 462 во NBCD код.

Бројот 462 во NBCD код се претставува 0100 0110 0010.

Самокомплементирачки кодови со 4 бита се (4,2,2,1), (4,3,1,1), вишок


3 и (2,4,2,1). Постојат и самокомплементирачки кодови кои имаат и
негативни тежини, како кодот (8,4,-2,-1).
Бројни системи и кодови 11

Циклични кодови

Циклични кодови се оние кај кои последователните кодни симболи се


разликуваат само во една позиција. Тие се нетежински кодови. Во
табела 1.13 е претставен цикличен код.

Табела 1.13: Цикличен код

Децимална цикличен код


цифра
0 0000
1 0001
2 0011
3 0010
4 0110
5 0100
6 1100
7 1110
8 1010
9 1000

Друг цикличен код е Грејовиот код (Gray code). Грејовиот код се


добива од бинарниот код на бројот со користење на следната формула

gi  bi  bi 1 0  i  n  1
gn  bn (1.7)
b
каде i , 0  i  n се цифрите на бинарниот код, додека i 0  i  n
g ,
се цифрите на Грејовиот код.
Операцијата  , се нарекува исклучиво ИЛИ (EXOR) и се изведува
според табела 1.14. Операцијата  претставува собирање по модул 2.
Логичките операции се разгледуваат во втората глава од оваа книга.

Табела 1.14: Табела на вистинитост за операцијата исклучиво ИЛИ

x y x y
0 0 0
0 1 1
1 0 1
1 1 0
12 Дигитална логика

За добивање на цифрите на Грејовиот код од бинарниот код може да


се користи и следната формула

gi  (bi  bi 1 ) mod 2 0  i  n  1. (1.8)

Во табела 1.15 е претставен Грејовиот код за цифрите од 0 до 15.

Табела 1.15: Грејов код

Децимална Грејов код бинарен код


цифра
0 0000 0000
1 0001 0001
2 0011 0010
3 0010 0011
4 0110 0100
5 0111 0101
6 0101 0110
7 0100 0111
8 1100 1000
9 1101 1001
10 1111 1010
11 1110 1011
12 1010 1100
13 1011 1101
14 1001 1110
15 1000 1111

Од табела 1.15 се забележува дека Грејовиот код е рефлективен.


Освен MS битот другите битови се симетрични во однос на средната
точка. Во горната половина MS битот е 0 а во долната 1.

Пример 1.28: Да се најде Грејовиот код за бинарниот код 1110.


Бројни системи и кодови 13

b3 b2 b1 b0
1 1 1 0

1 0 0 1

Грејовиот код за (1110)2=(14)10 е 1001.

За добивање на бинарниот код од Грејовиот код се користат


формулите

bn  g n
(1.9)
g i  bi  bi 1 0  i  n  1

При пресметувањето на бинарните цифри според вториот израз од


формулите 1.9 позната е вредноста на gi и bi а се определува
вредноста на bi-1.

Пример 1.29: Да се најде бинарниот код за Грејовиот код 1011.

g3 g2 g1 g0
1 0 1 1

b3=g3=1
g2=b3  b2 0=1  b2 според операцијата  следи дека b2=1
g1=b2  b1 1=1  b1 следи дека b1=0
g0=b1  b0 1=0  b0 следи дека b0=1

На Грејовиот код 1011 одговара бинарниот код (1101)2=(13)10.


14 Дигитална логика

Kонтрола на точност на пренесените информации

При пренос на информациите од предавателот кон приемникот низ


дигиталните системи може да се јави грешка како резултат на
различни фактори. Од тие причини од посебен интерес се техниките
за контрола на точноста на пренесените информации. Постојат кодови
за откривање и корегирање на грешки. Кодовите за откривање и
корегирање на грешки се формираат со додавање дополнителни,
контролни битови. Функцијата на дополнителните битови зависи од
методот на проверка на точноста на добиената информација.

 Кодови за откривање на грешки

Пред да бидат опишани некои кодови за откривање на грешки се


воведува поимот Булово (Boole) растојание како растојание меѓу
кодните зборови.

01
11

00 10

а)
001 011

101 111

000 010

100
110

б)
слика 1.2: а) Графичко претставување на 2-битни бинарни броеви
б)Графичко претставување на 3-битни бинарни броеви

Поимот растојание меѓу кодните зборови може геометриски да се


интерпретира преку бинарна n-коцка која има 2n темиња, при што
секое теме одговара на n-битна низа. Во коцката две темиња се
поврзани со гранка ако низите кои одговараат на темињата се
Бројни системи и кодови 15

разликуваат само во еден бит. Кодните зборови се претставуваат како


n-битни бинарни броеви.

2-битните бинарни броеви може да се претстават во


дводимензионална рамнина како на слика 1.2а.

Растојанието меѓу две соседни темиња е 1, а растојанието меѓу две


несоседни темиња во 2-коцка е секогаш 2. 3-битните бинарни броеви
може да се претстават во тридимензионален простор како на сликата
1.2б. Растојанието меѓу две соседни темиња е 1. Кај 3-
димензионалната коцка растојанието меѓу несоседни темиња може да
биде 2 (меѓу 001 и 111) или 3 (меѓу 001 и 110).

N-коцката овозможува геометриска интерпретација на концептот


растојание, кое се нарекува Хемингово (Hamming) растојание.
Дефиниција 1.2: Хемингово растојание меѓу две темиња е
најкраткиот пат меѓу темињата. Растојанието е еднакво на бројот на
битови во кои се разликуваат двата бинарни кодни зборови со кои се
означени темињата.

3-битен Грејов код (табела 1.16) користејќи ја визуелната


репрезентација може да се претстави како на сликата 1.3.

001-1 011-2

101-6 111-5

000-0 010-3

100-7
110-4

слика 1.3: Визуелна претстава на 3-битен Грејов код

Грејовиот код е цикличен, односно за код со 2 n кодни зборови кодот


за најголемиот број (2n-1) е на растојание 1 од кодот за најмалиот број
(0). Кај цикличните кодови во n-коцката се формира затворен пат.
Затворениот пат формиран од Грејовите кодни зборови не се сече
самиот себе и поминува низ сите 2 n точки од n-коцката. На сликата 1.3
затворениот пат е претставен со непрекинати линии.
16 Дигитална логика

Табела 1.16: 3-битен Грејов код

децимални цифри Грејов код


0 000
1 001
2 011
3 010
4 110
5 111
6 101
7 100

Секој код може да се разгледува како множество од низи од n бита


наречени кодни зборови. Кај кодовите за откривање на грешки важна
особина претставува минималното растојание меѓу кодните зборови.

Дефиниција 1.3: Минимално растојание на еден код е најмалиот број


на битови кои треба да се сменат во кодот на некој збор за да се добие
кодот на било кој друг збор.

На пример, минималното растојание кај NBCD кодот, Грејовиот код,


вишок 3 кодот и (2,4,2,1) кодот изнесува 1. Кај NBCD кодот со
парност и кодот 2 од 5, кои се опишани понатаму во текстот,
минималното растојание е 2.

а) бинарен код б)код со парна парност в) код со непарна парност


слика 1.4: Три начини на кодирање

За да се открие грешка во еден бит кодните зборови треба да имаат


растојание ≥2. Нека 3-битниот код се состои од следните кодни
зборови 000, 011, 100 и 110. Бидејќи кодниот збор 100 е на растојание
1 од 110 и 000 кодот не може да ги открие грешките во еден бит. Ако
Бројни системи и кодови 17

од множеството кодни зборови се изостави кодот 100 а се додаде 101


се добива код чии зборови се на растојание 2. Грешка во еден бит не
може да предизвика промена на еден коден збор во друг, па со овој
код може да се открие грешка во еден бит. Кодовите со парна и
непарна парност на сликата 1.4 се кодови со растојание 2.

 Код за проверка на парност

Кодовите за проверка на парност се кодови за откривање на грешки.


За минималното растојание меѓу кодните зборови да биде 2 потрeбно
е да се изедначи бројот на кодни и некодни зборови. Тоа се
постигнува со додавање на бит за парност на информационите битови
па се добива код со кодни зборови од n+1 бит.

Еден начин на контрола на точноста на информациите е додавање на


дополнителен бит со чија вредност се постигнува бројот на единици
во кодот секогаш да биде парен. Тој код се нарекува код со парна
парност. Друг начин е додавање на бит така да бројот на единици во
кодот да биде непарен при што се добива код со непарна парност.

Пример 1.30: Во табела 1.17 е прикажан NBCD код со непарна


парност. MS (Most Significant) битот е бит за непарна парност а
останатите битови се информациони битови.

Табела 1.17: NBCD код со непарна парност

Децимална NBCD код


цифра со непарна парност
0 10000
1 00001
2 00010
3 10011
4 00100
5 10101
6 10110
7 00111
8 01000
9 11001

Со овој код се открива една грешка во пренесената информација. Ако


примениот код содржи парен број на единици, настанала грешка при
пренесувањето на информацијата. Откриената грешка не може да се
18 Дигитална логика

корегира бидејќи не се знае на која позиција се јавува. Со користење


на бит за парност не може да се откријат две грешки.

 Код 2 од 5

Кодот 2 од 5 припаѓа на класа кодови m_излези_од_ n (m_out_of_n)


кои исто како кодовите за проверка на парност може да откријат
грешка во еден бит. Кодовите имаат кодни зборови од n битови а m
битови се поставени на 1.

Кај кодот 2 од 5 кодните зборови се состојат од 5 бита и секој коден


збор содржи 2 единици. Полутежинскиот код (7,4,2,1,0) е код 2 од 5.
Претставен е во табела 1.18.

Табела 1.18: 2 oд 5 код со тежини (7,4,2,1,0)

децимална цифра (7,4,2,1,0) код


0 11000
1 00011
2 00101
3 00110
4 01001
5 01010
6 01100
7 10001
8 10010
9 10100

Бројот на кодни зборови од 5 бита кои содржат по 2 единици може да


се пресмета како број на комбинации од 5 елементи од класа 2
5 5!
( )  10
2 2 !(5  2 )!
Кодот се нарекува полутежински бидејќи сите цифри освен нулата се
кодирани тежински, додека на нулата и е доделена последната
комбинација.

Со користење на 2 од 5 кодот може да се открие позицијата на една


грешка. Исто така, може да се открие двојна грешка, но само кога
грешките настанале на исти вредности (две нули или две единици).
Ако двојната грешка вклучува грешка кај една нула и една единица,
таквата грешка не може да се открие со овој код.
Бројни системи и кодови 19

Друг ваков полутежински код е (6,3,2,1,0) кој е претставен во табела


1.19.

Табела 1.19: 2 oд 5 код со тежини (6,3,2,1,0)

децимална цифра (6,3,2,1,0) код


0 01001
1 00011
2 00101
3 00110
4 01010
5 01100
6 10001
7 10010
8 10100
9 11000

 Дво-петински (biquinary) код

Со овој код може да се открие повеќе од една грешка. Тоа е 7 битен


код од два дела. Првиот дел е тежински код 1_излез_од_2, а вториот
дел е тежински код 1_излез_од_5. Дво-петинскиот код е претставен
во табела 1.20.

Табела 1.20: Дво-петински код

децимална цифра (5,0) (4,3,2,1,0)


0 01 00001
1 01 00010
2 01 00100
3 01 01000
4 01 10000
5 10 00001
6 10 00010
7 10 00100
8 10 01000
9 10 10000
20 Дигитална логика

 Кодови со остаток (residue codes)

Кодовите со остаток користат модуло аритметика, односно остаток


при делење со број наречен модул. При делењето се добива количник
и остаток или резидиум R, а операцијата се претставува со формулата
R(N)=N mod p.

Во табелата 1.21 се претставени остатоците при делење на броевите


од 0 до 9 со модулите 2, 3, 5 и 7.

Табела 1.21: Остатоци при модули 2,3,5 и 7

број N 2 3 5 7
0 0 0 0 0
1 1 1 1 1
2 0 2 2 2
3 1 0 3 3
4 0 1 4 4
5 1 2 0 5
6 0 0 1 6
7 1 1 2 0
8 0 2 3 1
9 1 0 4 2

Операцијата на собирање на броеви се врши со собирање на


остатоците во соодветниот броен систем (односно основата на
бројниот систем е модулот p).

модул 2 3 5 7
15 1 0 0 1
5 1 2 0 5
______________________
15+5=20 0 2 0 6

модул 2 3 5 7
8 0 2 3 1
6 0 0 1 6
______________________
8+6=14 0 2 4 0
Бројни системи и кодови 21

Множењето на броевите со остаток се изведува со множење по модул


p на остатоците.

модул 2 3 5 7
2 0 2 2 2
8 0 2 3 1
______________________
2*8=16 0 1 1 2

Бидејќи множењето на броевите со остаток е брза операција, оваа


техника се користи за реализација на брзи хардверски множачи кај
дигитални филтри. Исто така, аритметиката по модул над броеви со
остаток може да се користи за проверка на коректноста на резултатот
на аритметичките операции.

N1 321 321 mod 9 = 6


N2 248 248 mod 9 = 5
----- ------------------
N1+N2 569 569 mod 9 = 2 (6+5=11 mod 9=2)

Ако се користи модул p=r-1 каде r е основата на бројниот систем


пресметувањето може да се поедностави.

R(N1)=(3+2+1) mod 9 = (6) mod 9 = 6


R(N2)=(2+4+8) mod 9 = (14) mod 9 = 5

Техниките кои користат проверка на остаток се вградуваат во


хардверот за откривање на грешки при аритметичките операции.

Кодовите со остаток може да се користат за проверка на податоците


на два начина. Првиот начин остатокот за одреден модул го
приклучува кон бројот.

На пример, ако бројот кој треба да се пренесе е 46, односно N=


101110 се пресметува остаток R(N)=N mod 3=01. Кодниот збор се
проширува со остатокот и се добива 101110 01.

При вториот начин се множи бројот со одредениот модул (46*3=138)


при што остатокот за резултатот е 0. На пример, ако N=101110 и
модулот m=3 се добива коден збор 10001010. Овој начин се нарекува
самопроверка (self-checking).
22 Дигитална логика

 Бергерови кодови

Бергеровите кодови се користат за проектирање на логички кола кои


сами ги откриваат своите грешки. Кодниот збор се формира од битови
на податоци и битови за проверка. Битовите за проверка се формираат
како единечен комплемент од бројот на единици во битовите на
податоци.

За n податочни битови потребни се k   log 2 (n  1)  битови за


проверка.

На пример, ако n=100011, k   log 2 (6  1)   3 , Бергеровиот коден


збор ќе има 9 бита. Бројот n има 3 единици. Според тоа битовите за
проверка се 011, а единечниот комплемент 100. Бергеровиот коден
збор е 100011 100, каде последните 3 бита се битовите за проверка.

Со Бергеровите кодови може да се открие повеќе од една грешка но


само ако грешките се од ист вид, односно промена на 1 во 0 или на 0
во 1. Доколку еден бит се промени од 1 на 0, а друг од 0 во 1
откривањето на грешките не е можно.

 Кодови за корекција на грешки

Кај кодовите за корекција на грешки потребни се повеќе контролни


битови за да се добие прецизна информација за тоа во кој бит
настанала грешката.

Корекцијата ќе биде опишана со едноставен пример за код кој се


состои од 2 кодни збора: 000 и 111. Минималното растојание за овој
код изнесува 3. Ако при преносот на кодниот збор 000 настане грешка
во еден бит се добива коден збор кој не припаѓа на кодот.

При грешка во еден бит на приемната страна може да се добијат


кодните зборови 100, 010 или 001. Овие кодни зборови се на
растојание 1 од зборот 000 и на растојание 2 од 111. На приемната
страна може да се корегира кодниот збор во 000.

За да може да се корегираат x грешки потребно е минималното


растојание на кодот да биде 2x+1. Ако минималното растојание на
кодот е 2x+y+1 може да се корегираат x грешки и дополнително да се
откријат y грешки.
Бројни системи и кодови 23

 Хемингови кодови за корекција на грешка

Хеминговите кодови се едни од најчесто користените кодови за


корекција на грешка кај RAM меморијата. Кај овие кодови на n-те
податочни битови им се додаваат к битови за парност, при што се
формира збор со должина m=n+k. Битовите за парност секогаш се
наоѓаат на позициите 1, 2, 4, 8, ..., односно на позициите кои се
степени на бројот 2. Кодот може да се користи за пренос на зборови
со произволна должина. Секој бит за парност контролира група на
позиции така да бројот на единици во групата биде парен. Битот за
парност на позиција 2p, ја контролира групата на позиции чија
бинарна репрезентација има 1 на локацијата p.

Определување на групите чија парност ќе се контролира од одреден


контролен бит се изведува на следниот начин: Позициите се
претставуваат бинарно. Потоа се групираат во однос на вредностите
на одредени битови. На пример, најмалку значајниот (најдесниот) бит
е единица за броевите 1,3,5,7 итн, па првиот контролен бит ќе ги
контролира 3, 5 и 7 бит. Следниот бит е единица во броевите 2,3,6,7
што значи дека вториот контролен бит ќе ги контролира 3, 6 и 7 бит.
Веднаш се воочува дека секоја група започнува со број кој е степен на
бројот 2. Затоа на таа позиција се поставува самиот контролен бит.

 Хемингов код со минимално растојание 3,


можност за откривање на 1 грешка и
корегирање на 1 грешка

Во продолжение е опишан Хемингов код за кодни зборови од 4


податочни бита, на кои се додаваат 3 контролни бита. На тој начин се
добиваат кодни зборови од 7 бита кои се означени како во табела 1.22.

Табела 1.22: Хемингов коден збор од 7 бита

Позиција 1 2 3 4 5 6 7
Име c1 c2 b3 c4 b2 b1 B0

Контролните битови ја контролираат парноста на одреден број на


позиции, и тоа:

 c1 ги контролира позициите 1, 3, 5 и 7 така да има парна


парност (парен број на единици на дадените позиции)
24 Дигитална логика

 c2 ги контролира позициите 2, 3, 6 и 7 така да има парна


парност
 c4 ги контролира позициите 4, 5, 6 и 7 така да има парна
парност.

Според тоа вредноста на контролните битови може да се пресмета по


формулите

c1  b3  b2  b0 (1.10)
c2  b3  b1  b0 (1.11)
c4  b2  b1  b0 (1.12)

Пример 1.31: Да се кодира бројот 5 со Хемингов код.

NBCD кодот на бројот 5 е 0101. Битовите што ја контролираат


парноста се
c1  0  1  1  0
c2  0  0  1  1
c3  1  0  1  0
Хеминговиот код за бројот 5 е даден во следната табела

Позиција 1 2 3 4 5 6 7
Име c1 c2 b3 c4 b2 b1 B0
Вредност 0 1 0 0 1 0 1

На приемната страна се пресметуваат контролните битови p 1, p2 и p4


користејќи ги следните формули

p1  c1  b3  b2  b0 (1.13)
p2  c2  b3  b1  b0 (1.14)
p4  c4  b2  b1  b0 (1.15)

Ако сите контролни битови се нула при преносот не настанала


грешка. Доколку има грешка, од битовите p1, p2 и p4 се формира
образец кој овозможува откривање на позицијата во која настанала
грешката. Образецот се формира така што битовите се запишуваат во
следниот редослед p4 p2 p1. Тој прочитан како бинарен број ја дава
позицијата во која настанала грешката.
Бројни системи и кодови 25

Пример 1.32: Да се најде и корегира грешката ако при пренос на


бројот 5 со Хемингов код на приемната страна се добие кодниот збор
0100111.

Примениот коден збор е

c1 c2 b3 c4 b2 b1 b0
0 1 0 0 1 1 1

За p1, p2 и p4 се добива

p1  0  0  1  1  0
p2  1  0  1  1  1
p4  0  1  1  1  1

Од овие битови се формира образецот 110 што означува дека


грешката се појавила на шестата позиција. Корекција се врши со
комплементирање на шестиот бит (b 1), при што се добива кодниот
збор 0100101.

Хеминговите кодови може да се користат за откривање и корегирање


на грешки за зборови со било која должина. Грешка може да се јави
како кај податочните битови така и кај битовите за проверка на
парност.

Општо, Хеминговиот код се состои од n податочни и к контролни


битови, односно од вкупно n+k битови. Образецот се состои од к
битови, што значи дека има 2к вредности, кои може да се менуваат од
0 до 2к-1. Една од овие вредности, најчесто нулата, се зема како
индикатор дека нема грешка, оставајќи 2 к-1 вредности кои покажуваат
кој од n+k битови е погрешен.

Од ова разгледување следи релацијата 2 к-1 ≥ n+k. Решавајќи ја


неравенката по n се добива n ≤ 2 к-1-к. Оваа релација ја дава врската
помеѓу бројот на податочни и контролни битови. Во табела 1.23 се
дадени интервалите на n за различно к.

Така, за k=3 со добива n≤7-3=4, додека за к=4 се добива n≤15-4=11.


Тоа значи дека за к=4 контролни битови зборот може да има помалку
од 11 битови но мора да има најмалку 5 битови, во спротивно доволни
се 3 контролни бита.
26 Дигитална логика

Табела 1.23:Врска меѓу број на контролни (к) и податочни (n) битови

к N
3 3-4
4 5-11
5 12-26
6 27-57
7 58-120

Основниот Хемингов код со минимално кодно растојание 3 може да


открие и корегира една грешка. Во одредени случаи може да се
откријат и две грешки, но не може да се корегираат. Со додавање на
бит за парност кој го контролира бројот на единици во целиот збор се
добива проширен Хемингов код со кој може да се откријат две
грешки и да се корегира една грешка.

Пример 1.33: Да се кодира 8-битниот збор 10101100 со Хемингов


код.

Од Хеминговата неравенка 2 к ≥ n+k+1 треба да се определи бројот на


контролни битови k. За n=8 податочни бита бројот на контролни
битови к треба да е најмалку 4, бидејќи 2 4 ≥ 8+4+1, односно 16≥13.
Контролните битови се наоѓаат на позициите 1, 2, 4 и 8, како што е
претставено со следната табела.

Позиција 1 2 3 4 5 6 7 8 9 10 11 12
Име C1 c2 b7 c4 b6 b5 b4 c8 b3 b2 b1 b0
Вредност 0 1 1 1 0 1 0 0 1 1 0 0

Битовите кои ја контролираат парноста се пресметуваат на следниот


начин:
c1 се пресметува со операција исклучиво ИЛИ од битовите на
позициите 3, 5, 7, 9 и 11
c2 од битовите на позициите 3, 6, 7, 10 и 11
c4 од битовите на позициите 5, 6, 7 и 12
c8 од битовите на позициите 9, 10, 11 и 12.

Според тоа, вредностите на контролните битови се

c1  b7  b6  b4  b3  b1  1  0  0  1  0  0
c 2  b7  b5  b4  b2  b1  1  1  0  1  0  1
Бројни системи и кодови 27

c 4  b6  b5  b4  b0  0  1  0  0  1
c8  b3  b2  b1  b0  1  1  0  0  0

Пример 1.34: Зборот 111101001100 е Хемингов код од 8 податочни и


4 контролни бита добиен на приемната страна. Да се провери дали
постои грешка при преносот.

Хеминговиот код со 8 податочни и 4 контролни бита може да се


запише како што е прикажано во следната табела:

Позиција 1 2 3 4 5 6 7 8 9 10 11 12
Име C1 c2 b7 c4 b6 b5 b4 c8 b3 b2 b1 b0
Вредност 1 1 1 1 0 1 0 0 1 1 0 0

За да се провери дали настанала грешка при преносот треба да се


пресмета образeцот, односно да се пресметаат контролните битови:

p1  c1  b7  b6  b4  b3  b1  1  1  0  0  1  0  1
p 2  c 2  b7  b5  b4  b2  b1  1  1  1  0  1  0  0
p 4  c 4  b6  b5  b4  b0  1  0  1  0  0  0
p8  c8  b3  b2  b1  b0  0  1  1  0  0  0

Според тоа образецот е


p8 p4 p2 p1
0 0 0 1
и настанала грешка на првата позиција која се корегира со замена на 1
со 0. Кодниот збор кој треба да се добие е 011101001100.

 Хемингов код со минимално растојание 4, со


можност за корегирање на една грешка и
откривање на две грешки

Нека со L е означено минималното кодно растојание на еден код, со D


број на грешки кои може само да се детектираат, а со C број на
грешки кои може да се детектираат и корегираат, тогаш важи
формулата L-1=C+D и D≥C.

Во табела 1.24 се претставени можните вредности за C и D во


зависност од L.
28 Дигитална логика

Табела 1.24: Број на грешки кои може да се детектираат (D) и


корегираат (C) за дадено минимално кодно растојание (L)

L D C
1 0 0
2 1 0
3 2 0
1 1
4 3 0
2 1
5 4 0
3 1
2 2

Од табелата се забележува дека кај кодот кој има минимално


растојание L=4 може да се откријат D=2 грешки и да се корегира C=1
грешка.

Проширен Хемингов код се добива од основниот со додавање на уште


еден контролен бит кој ја контролира парноста на целиот збор, така да
зборот има парна парност.

За да се добие проширен Хемингов код за коден збор со 4 податочни


и 3 контролни бита треба да се додаде контролен бит c 8 на 8-та
позиција.

Ако кај овој код настане грешка во првите 7 позиции:


 парноста на целиот збор е погрешна
 со помош на p1, p2 и p4 се пронаоѓа и корегира грешката.
Ако грешката настанала во осмиот бит, тогаш:
 парноста на зборот е погрешна
 p4p2p1=000 па следи дека погрешен е осмиот бит.

Доколку се појави двојна грешка, парноста на зборот ќе биде точна,


но p1, p2 и p4 ќе укажуваат на грешка. На овој начин може само да се
детектира, но не и да се корегира двојната грешка.

Проширениот Хемингов код за коден збор со 8 податочни и 4


контролни бита има дополнителен 13 бит кој претставува резултат од
операцијата исклучиво ИЛИ на другите 12 бита.
Бројни системи и кодови 29

1.7 Алфанумерички кодови

Покрај претставувањето на броевите, кај компјутерите, потребно е и


претставување на буквите и некои специјални знаци. За таа цел се
користат алфанумеричките кодови. За кодирање на цифрите и
латиничната азбука потребни се 10+26=36 кодни зборови, односно
бинарно може да се кодираат со најмалку 6 бита.

Еден од најчесто користените алфанумерички кодови е ASCII


(American Standard Code for Information Interchange). Првобитниот
ASCII код користел 5 бита. Овој код е изведен од Baudot кодот кој се
користи кај телексите. Заради ограничените можности на 5-битниот
ASCII код, во 1967 година, меѓународната организација за стандарди
(ISO - International Organization for Standardization) создала 7-битен
код. Со 7-битниот ASCII код (слика 1.5) се кодираат 52 букви (мали и
големи букви), 10 цифри, 32 контролни карактери, 32 специјални
карактери (како $ и #) и space карактерот. Контролните карактери
служат за контрола на комуникацијата, форматирање на текстот, како
сепаратори на логички целини и слично (слика 1.6). Најзначајниот бит
требало да се користи како бит за парност за откривање на грешки во
кодот.

Во почетокот на 80-тите години на минатиот век производителите на


компјутери започнале да го користат овој бит за проширување на
множеството симболи од 128 до 255. Во зависност од производителот
додадените симболи биле графички карактери, варијанти на
принтерски фонтови, математички симболи и слично. Една варијанта
на ASCII кодот е ANSI (American National Standards Institute) кодот,
кај кој сите карактери освен контролните се исти со ASCII кодот.

IBM користи свој код (слика 1.7) базиран на NBCD кодот, наречен
EBCDIC (Extended Binary Coded Decimal Interchange Code). Овој код
има 8 бита за кодирање и ги содржи истите симболи како и ASCII
кодот, но во друг распоред (слика 1.8). Кодот на карактерите се
добива со соединување на битовите за број (digit bits) и битовите за
зона (zone bits). EBCDIC е развиен при создавањето на IBM
System/360. Пред тоа IBM користел BCD кодирање. Кај BCD секоја
цифра се претставува со 4-битна бинарна репрезентација (слика 1.8).
Кодовите од 1010 до 1111 не се користат за кодирање на цифрите. Три
од овие кодови имаат специфично значење: 1111 означува број без
знак, 1100 позитивен број и 1101 негативен број. Овие кодови се
30 Дигитална логика

додаваат пред кодот на цифрата и формираат 8-битен податок при


процесот наречен пакување на на броевите.

слика 1.5: ASCII код

слика 1.6: Значење на кратенките во ASCII кодот


Бројни системи и кодови 31

На пример, бројот -1265 во пакуван BCD код може да се претстави

1111 0001 0010 0110 0101 1101

Бројот е претставен со 3 бајти, 4-те бита за знак се додадени на крајот,


а почетните 4 бита се пополнети со единици.

слика 1.7: EBCDIC код

слика 1.8: Значење на кратенките кај EBCDIC код


32 Дигитална логика

слика 1.9: BCD код

Unicode претставува 16 битен код кој е компатибилен со ASCII и


множеството карактери Latin-1. Овој код овозможува кодирање на
повеќе азбуки и нивно наизменично користење. Кодниот простор на
Unicode се состои од 5 дела (слика 1.10).

слика 1.10: Распоред на кодовите за Unicode кодот


Бројни системи и кодови 33

1.8 Задачи

1. Кој декаден број одговара на најголемиот број што може да се


изрази со:
а) 8 битови, б) 16 битови в) 32 битови.

2. Да се изврши конверзија на бинарните броеви во декадни


а) 111010, б) 10101111.101 в) 110110110.

3. Да се изврши конверзија на декадните броеви во бинарни


а) 194, б) 2006, в) 140, г) 270.

4. Да се изврши конверзија на броевите


а) (764.7)8 во хексадекаден броен систем
б) (F6D.C)16 во октален броен систем
в) (147.5)8 во кватернарен броен систем.

5. Да се изврши конверзија на броевите во декаден броен систем


а) (12021)3
б) (4321)5
в) (А98)12.

6. Да се пресмета разликата (3EF)16-(1111)2 и резултатот да се напише


во
а) вишок 3 код
б) Грејов код.

7. Да се кодира со Хeмингов код бинарниот број 1110. Колку


контролни битови се потребни за кодирање на порака со должина од 4
податочни бита.

8. а) Да се корегира грешката ако при пренос на информации со


Хeмингов код се добие кодниот збор 1000111. Корегираниот коден
збор без контролните битови да се напише во Грејов код.
б) Колку контролни битови се потребни за да се кодира со Хeмингов
код пораката со должина m=8 податочни битови: 11010010.

9. Да се конвертираат декадните броеви 53, 130 и 214 во


а) бинарен броен систем, б) BCD код, в) 84-2-1 код, г) Грејов код.
34 Дигитална логика

10. Да се претстават декадните броеви во бинарен броен систем


користејќи претставување знак-модул со 8 битови, единечен и двоен
комплемент:
а) 77, б) -42, в) 119, г)-107.

11. Користејќи збор од 4 бита да се напишат сите бинарни броеви со


знак и нивните декадни еквиваленти кои може да се претстават со
а) знак-модул
б) единечен комплемент
в) двоен комплемент.

12. Кој е опсегот на броевите кои може да се претстават со n бита во


системите
а) знак-модул
б) единечен комплемент
в) двоен комплемент.

13. Да се одреди кои од следните тежински кодови се


самокомплементирачки?
а) (8, 4, -3, -2)
б) (7, 5, 3, -6)
в) (6, 2, 2, 1)

14. Да се претстават декадните броеви 535 и 637 во


а) BCD код
б) вишок 3 код.
Да се соберат кодираните броеви и да се провери дали сумата е
коректно кодирана.

15. Да се пресмета разликата 721 - 423 во кодот вишок 3.

16. Да се одреди бројот на кодни зборови кај кодната шема m-излези-


од-n (m-out-of-n) кога
а) n=5, m=2
б) n=6, m=3
в) n=8, m=1.

16. Да се пресмета остатокот за следните декадни броеви користејќи


модуло 9:
а) 1472943
б) 236798
в) 124011.
Бројни системи и кодови 35

17. Да се напишат кодните зборови за 2-out-of-5 кодот и да се изведат


Бергеровите кодни зборови за секој збор.

18. 7-битниот Хемингов код е составен од 4 информациони и 3


контролни бита. За следните 7-битни кодни зборови да се одреди дали
постои грешка. Ако постои да се одреди во која позиција настанала
грешката?
а) 1110010
б) 0111100
в) 0101001
г) 1000001.

19. Да се претстави декадниот број 9876 во


а) код 8421
б) код 2421
в) вишок 3 код
г) дво-петински код

20. Колку грешки може да се откријат со код чие минимално


растојание е d?

You might also like