Методи и операционни блокове за преобразуване на числа от десетична в двоична бройна система

1. Цел на упражнението:

Целта на упражнението е, работейки с програмните модели на операционните блокове за преобразуване на цели и дробни числа от десетична в двоична бройна система, студентите да добият по-ясна представа за начините за реализиране на съответните методи, а също така да се установи степента на усвояване на микроалгоритмите за преобразуване.

2. Теоретична част:

2.1. Общ метод за преобразуване на числата от една позиционна бройна система в друга.

Постановка на задачата: Да се преобразува число, записано в система с основа q в система с основа p, т.е. да се представи например в следния вид:

АP = аn pn-1 + аn-1pn-2 + аn-2pn-3 + … + а3 p2 + а2 p + а1 +

+ а-1 p-1 + а-2 p-2 + а-3p-3 +… + а-k p-k =

= АЦЧ + АДЧ

Преобразуването на цялата (АЦЧ) и на дробната (АДЧ) част на числото се извършва по различни начини т.е. отделно.

2.1.1. Преобразуване на цели числа – извършва се като AЦЧ се раздели на p и се отдели целочисленото частно A’ и остатъкът, а след това А’ се раздели на p и се отдели целочисленото частно A’’ и остатъкът и т.н. докато се получи частно равно на 0. Получените остатъци са търсените цифри аi като последният остатък е старшата цифра на числото АР.

Доказателство: Допускаме, че числото вече е преобразувано.

АЦЧ/p = аn pn-2+ аn-1pn-3+ аn-2pn-4 +… + а3 p + а2 + а1/p;  а1 -  остатък

А’/p   = аn pn-3+ аn-1pn-4+ аn-2pn-5 +… + а3 + а2/p;             а2 -  остатък

Делението се извършва в система с основа q, т.е. основата p трябва предварително да се представи в тази система (ако е необходимо). Цифрите а1, а2, … също се поучават в система с основа q и трябва впоследствие да се преобразуват (ако е необходимо).

По-долу в качеството на пример ще бъде показано преобразуването на цели числа от десетичната в осмичната система и обратно. Както вече беше споменато, при това всички действия се извършват в системата, от която се преминава към друга система. За облекчаване на преобразуването от осмичната в десетичната система е показано и съответствието между числата в тези две системи.

“10’’ 0 7 8 9 10 11 12 13 14 15 16
“8’’ 0 7 10 11 12 13 14 15 16 17 20
(147)10 ® ( ? )8 (223)8 ® ( ? )10
147 : 8 223 :12
-144 18 : 8 -214 16 :12
3 -16 2 : 8 7 -12 1 :12
а1 2 -0 0 а1 4 -0 0
а2 2 а2 1
а3 а3
(147)10 ® (223)8 (223)8® (147)10

2.1.2. Преобразуване на дробни числа – извършва се като AДЧ се умножи на p и се отдели дробната част A’ и цялата част, след това A’ се умножи на p и се отдели дробната част A’’ и цялата част и т.н. докато се получи дробна част равна на 0 или докато не се получат толкова на брой разряди, че точността на представяне на числото след преобразуването да бъде същата като тази преди преобразуването. Получените цели части са търсените цифри а-i като първата цяла част е старшата цифра на числото АP.

Доказателство: Допускаме, че числото вече е преобразувано.

АДЧ . p = а-1 + а-2 p-1 + а-3 p-2 +… + а-k p-(k-1) ;                  a-1 – цяла част

А’ . p  = а-2 + а-3 p-1 + … + а-k p-(k-2) ;                                        a-2 – цяла част

………………………………………………….

Умножението се извършва в система с основа q, т.е. основата p трябва предварително да се представи в тази система (ако е необходимо). Цифрите а-1, а-2, … също се получават в система с основа q и трябва впоследствие да се преобразуват (ако е необходимо).

В случай, че при умножението на р не се получава дробна част равна на нула, се изчисляват толкова на брой разряди след запетаята, колкото е необходимо за запазване на точността на представяне. Този брой може да се определи по следната формула:

nР = nq. lg q / lg p,

където nq е броят разряди след запетаята на числото в система с основа q, а nР е минималният брой разряди, които трябва да се получат в процеса на преобразуването.

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

(0,6875)10® ( ? )8 (0,54)8® ( ? )10
0, 6875 0, 54
х 8 х 12
а-1 5, 5000 1, 30
х 8 +5, 4
а-2 4, 0000 а-1 6¬6, 70
х 12
(0,6875)10®(0,54)8 1, 60
+7, 0
а-2 8¬10, 60
х 12
1, 40
+6, 0
а-3 7¬7, 40
х 12
1, 00
+4, 0
а-4 5¬5, 00
(0,54)8® (0,6875)10

2.2. Методи за преобразуване от десетична в двоична система.

2.2.1. Метод за ръчно преобразуване – използва се общият метод, т.е. чрез деление на цялата част и умножение на дробната част на 2.

(147)10® ( ? )2 (0,6875)10 ® ( ? )2
147 : 2 0, 6875
146 73 : 2 x 2
1 72 36 : 2 a-1 1, 3750
a1 1 36 18 : 2 х 2
a2 0 18 9 : 2 a-2 0, 7500
a3 0 8 4 : 2 x 2
a4 1 4 2 : 2 a-3 1, 5000
a5 0 2 1 : 2 x 2
a6 0 0 0 a-4 1, 0000
a7 1
a8 (0,6875)10 ® (0,1011)2
(147)10® (10010011)2

2.2.2. Методи за машинно преобразуване:

а. програмно – използват се специални подпрограми, алгоритмите на които са съставени на базата на показаните по-долу изрази.

За цели десетични числа:

АЦЧ = аn 10n-1 + аn-110n-2 + … + а2 10 + а1=

= (( … ((0 + аn)10 + аn-1)10 + … + а2)10 + а1

За дробни десетични числа:

АДЧ = а-1 10-1 + а-2 10-2 + … + а-(k-1)10-(k-1) + а-k10-k =

= ((…((0 + а-k)/10 + а-(k-1))/10 +…+а-2)/10 + а-1)/10

Цифрите ai на десетичното число, а също и основата на десетичната система се представят в двоичната (използва се код 8421) и всички действия се извършват в тази система. В резултат се получава  A в двоичната система.

б. апаратно – десетичното число се представя в десетична двоично – кодирана система с използване на код 8421.

- преобразуване на цели числа – използва се общият метод, т.е. чрез деление на 2 и отделяне на остатъците.

Апаратното деление на 2 става чрез изместване на двоично-десетичния код на десетичното число на един разряд надясно. При това, ако в старшия разряд на дадената тетрада не се прехвърли “1” от съседната й в ляво, то, в резултат на изместването, в тази тетрада действително се получава кодът на разделената на 2 десетична цифра. Например:

80 40 20 10 8 4 2 1
1 0 0 0 0 1 1 0 86
ИД 0 1 0 0 0 0 1 1 43

Но, ако след изместването в старшия разряд на дадена тетрада се появи “1”, тя ще получи  тегло 8, а не 10/2=5, както би трябвало да бъде. Следователно съдържанието на всяка тетрада, в старшия разряд на която се е появила “1”, трябва да се намалява с 8-5=3.  Но това изисква използването на субтрактор, което може да се избегне, ако вместо да се изважда 3 се прибавя 13, т.е. 1101. При това, тъй като в старшия разряд на тетрадата има “1”, а събирането е двоично, то винаги ще възниква пренос с тегло 16. Ако този пренос не бъде отчетен, в крайна сметка се получава корекция 13-16=-3, както и трябва да бъде. Например:

80 40 20 10 8 4 2 1
1 0 0 1 0 1 1 0 96
ИД 0 1 0 0 1 0 1 1

+

кор. 0 0 0 0 1 1 0 1
0 1 0 0 1 0 0 0 48

Схемата на операционната част на блока за преобразуване на цели десетични числа в двоичната система е показана на фиг.1. В Рх се записва двоично-десетичният код на десетичното число, в Рк се записват кодовете на корекциите, а в Рz след съответния брой цикли се получава двоичният код на числото. Във всеки от циклите се извършват последователно следните микрооперации:

*  ИД Рх и ИД Рz;

*  ЗРк;

*  ПрК Рх и ПрК Рк в å;

*  ПК Рх.

Забележка: При корекция = 0 може да се извършва направо ИД.

(75)10® ( ? )2
Рх Рz
0111 0101 0000000
ИД1 0011 1010 1000000
Кор. + 0000 1101
0011 0111
ИД2 0001 1011 1100000
Кор. + 0000 1101
0001 1000
ИД3 0000 1100 0110000
Кор. + 0000 1101
0000 1001
ИД4 0000 0100 1011000
Кор. + 0000 0000
0000 0100
ИД5 0000 0010 0101100
Кор. + 0000 0000
0000 0010
ИД6 0000 0001 0010110
Кор. + 0000 0000
0000 0001
ИД7 0000 0000 1001011
Цифрова диаграма на блока за преобразуване на цели числа от десетичната в двоичната система

преобразуване на дробни числа – използва се общият метод, т.е. чрез умножение на 2 и отделяне на целите части.

Апаратното умножение на 2 става чрез изместване на двоично-десетичния код на десетичното число на един разряд наляво, което е равносилно на събиране на две еднакви числа. При това, за да се получи кодът на удвоеното число се налага прибавянето на корекция (+6) към тези тетради, в които след изместването се е получил код на цифра > 9, а също и към тетрадите, в старшия разряд на които преди изместването е имало “1”, т.е. от които при изместването се е получил пренос. С цел да се опрости апаратната реализация на това правило преди изместването се прибавя корекция (+3) към всички тетради, в които има кодове на цифри > 4. Валидността на последното може да бъде показана със следната таблица:

Преди изместване След

изместването

Кор. Забележка
0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 1 0 0 Корекция
2 0 0 1 0 0 0 1 0 0 0 не е
3 0 0 1 1 0 0 1 1 0 0 необходима
4 0 1 0 0 0 1 0 0 0 0
5 0 1 0 1 0 1 0 1 0 +6 Тетрада
6 0 1 1 0 0 1 1 0 0 +6 по-голяма
7 0 1 1 1 0 1 1 1 0 +6 от  9
8 1 0 0 0 1 0 0 0 0 +6 Пренос
9 1 0 0 1 1 0 0 1 0 +6 Пренос

Схемата на операционната част на блока за преобразуване на дробни десетични числа в двоичната система е показана на фиг.3. В Рх се записва двоично-десетичният код на десетичното число, в Рк се записват кодовете на корекциите, а в Рz след съответния брой цикли се получава двоичният код на числото. Във всеки от циклите се извършват последователно следните микрооперации:

*  ЗРк;

*  ПрК Рх и ПрК Рк в å;

*  ПК Рх;

*  ИЛ Рх и ИЛ Рz.

Забележка: При корекция = 0 може да се извършва направо ИЛ.

Методи и операционни блокове за преобразуване на числата от десетична в двоична бройна система

Сходни статии:

  1. Програма за преобразуване на четирибайтови числа в допълнителен код Програма за преобразуване на четирибайтови числа в допълнителен код Зададеното число се разполага в четири последователни клетки от паметта. И тук е прието най-старшият байт да е с най-малък адрес....
  2. Програма за преобразуване на еднобайтови двоични числа в BCD код Максималната стойност на еднобайтовото число е 255. За да бъде преобразувано в двоично-десетично, може да се постъпи по следния начин. От зададената стойност да се изважда най-напред100, докато се получи...
  3. Изваждане на BCD числа За изваждане на BCD числа не могат да се използват инструкциите SUB, SBC, SBCI, защото код BCD и двоичният код са съвсем различни неща. Тук ще бъде използван алгоритъм, който...
  4. Търсене на числа от поредица автор: Веселин Димитров Програмата е създадена с цел намирането на числа от поредица такива, които са по-големи от сбора на всички предхождащи го числа. Програмата позволява да се четат числа...
  5. Програма за умножение на еднобайтови числа без алгебричен знак Програма за умножение на еднобайтови числа без алгебричен знак Алгоритъм на умножението Нека е дадено множимото 1101 и множителя1001. Алгоритъмът за умножение на десетични и двоични числа е един и...

Студио за уеб дизайн услуги, изработка на сайтове, SEO оптимизация и Интернет реклама Seven Web Design представя своите професионални уеб дизайн умения на високо ниво. Seven Web Design е продукт на Уеб Дизайн България Груп ООД ®
Comments are closed.