Бройната система е символен метод за представяне на числата използвайки ограничен брой символи (цифри).
Разделят се на два вида:
Непозиционни – при тях стойността на цифрата не зависи от нейната позиция в числото. Такава бройна система е Римската.
Позиционни – при тях стойността на цифрата зависи от нейната позиция в записа на числото, като тя се умножава с т.нар. тегловен коефициент.
Тегловният коефициент е основата на бройната система (например 2, 10 или 16), повдигната на различна степен: нула – за най-младшия разряд, единица за следващия и т.н. – степента нараства с единица за всеки следващ по-старши разряд (ако числото е дробно, степента на най-старшия разряд е -1).
Най-използваната позиционна бройна система е десетичната.
В електрониката и програмирането се използват двоична, шестнадесетична и по-рядко осмична бройна система.
При двоичната бройна система се използват само две цифри – 0 и 1.
Бележи се с долен индекс 2 или с малката латинска буква b (от английски: binary – „двоичен“) след числото.
Например 10012 =1001b = 910,
Отделните цифри се означават като бит. Редицата от битове (0 и 1) се нарича бинарен (или двоичен) код. Група от 8 бита е прието да е равно на 1 байт.
Както при всички други бройни системи завършващият (най-десният) бит се нарича най-младши разред, а всеки отляво е по-старши разред.
Преобразуване:
За да превърнем число от десетична в двоична бройна система, трябва да го разделяме на 2, докато частното стане нула като записваме остатъците вдясно (ако числото не може да се дели на 2, записваме единица, а ако може – нула).
Да вземем например числото 50:
50:2 = 25 -> остатък 0
25:2 = 12 -> остатък 1
12:2 = 6 -> остатък 0
6:2 = 3 -> остатък 0
3:2 = 1 -> остатък 1
1:2 = 0 -> остатък 1
След като извършим делението вземаме получените в остатъка нули и единици, като резултатът в последното деление става най-старшия разряд на двоичното число, а резултатът от първото деление – най-младшия.
Тоест получаваме че числото 50 в двоичен код е 110010.
За да преобразуваме дробно число последователно умножаваме по основата на бройната система (в случая 2) до достигане на желаната точност. При всяко умножаване цялата част на получения резултат е съответен разряд от двоичния еквивалент.
Да вземем за пример числото 0. 425 и да го преобразуваме в двоично число с точност до петия знак след запетаята:
0.425*2 = 0.85 -> 0
0.85*2 = 1.7 -> 1 (изваждаме 1)
0.7*2 = 1.4 -> 1 (изваждаме 1)
0.4*2 = 0.8 -> 0
0.8*2 = 1.6 -> 1 (изваждаме 1)
За да получим числото, вземаме цялата част от всеки отговор от горе на долу и за числото 0,425 в десетична бройна система получаваме (с точност до петия знак след запетаята) 0,01101 в двоична.
При преобразуване на дробно число, чиято цяла част не е нула, преобразуваме по отделно двете части.
Например числото 50,425:
Първо преобразуваме 50 -> 110010
След това преобразуваме дробната част 0.425 -> 0,01101
50,425 -> 110010,01101
Да вземем за пример числото 1011011. За да го превърнем в десетична бройна система, трябва да сумираме тегловните коефициенти, умножени по цифрата на съответната позиция.
1011011 = 1*26 + 0*25 + 1*24 + 1*23 + 0*22 + 1*21 + 1*20 = 64 + 0 + 16 + 8 + 0 + 2 + 1 = 91
За по-опрестено преобразуване можем да сумираме само тези тегловни коефициенти съдържащи единица, тоест:
1011011 = 1*26 + 1*24 + 1*23 + 1*21 + 1*20 = 64 + 16 + 8 + 2 + 1 = 91
2. Шестнадесетична бройна система
Това е позиционна бройна система, с основа 16, в която числата се представят с помощта на 16 динамични символа. Символите от 0-9 са представени чрез арабски цифри, а латинските букви A, B, C, D, E, F (или a-f) се ползват за стойностите от 10 до 15. Всяка шестнайсетична цифра се представя като група от четири двоични цифри (бит).
Преобразуване:
Най-лесно се осъществява използвайки следната таблица:
Десетична |
Двоична |
Шестнадесетична |
0 |
0000 |
0 |
1 |
0001 |
1 |
2 |
0010 |
2 |
3 |
0011 |
3 |
4 |
0100 |
4 |
5 |
0101 |
5 |
6 |
0110 |
6 |
7 |
0111 |
7 |
8 |
1000 |
8 |
9 |
1001 |
9 |
10 |
1010 |
А |
11 |
1011 |
B |
12 |
1100 |
C |
13 |
1101 |
D |
14 |
1110 |
E |
15 |
1111 |
F |
Aко искаме да преобразуваме двоичното число 10110010101001111101101 в шестнадесетичен код, трябва да го разделим, от най-младшия разряд към най-старшия, на по четири бита (тетради). Тоест:
101|1001|0101|0011|1110|1101
Всеки четири бита двоичен код отговарят на число в шестнадесетичен (от таблицата). Ако в най-старшия разряд не са четири бита, просто го допълваме с нули.
0101|1001|0101|0011|1110|1101
И така получаваме:
0101 -> 5
1001 -> 9
0101 -> 5
0011 -> 3
1110 - > Е
1101 -> D
10110010101001111101101(2) = 5953ED(16)
Преобразуването от шестнадесетична в двоична бройна система става по аналогичен начин.
Пример:
8D4A(16)
8 -> 1000
D -> 1101
4 -> 0100
A -> 1010
8D4A(16) = 1000110101001010(2)
Както при двоичната бройна система, преобразуването от десетична в шестнадесетична се извършва като разделим десетичното число на 16 докато не получим, частно нула.
Пример:
538231(10) = ?(16)
538231:16 = 33639 -> остатък 7
33639:16 = 2101 -> остатък 7
2101:16 = 131 -> остатък 6
131:16 = 8 -> остатък 3
8:16 = 0 -> остатък 8
Взимаме остатъка отзад напред и получаваме: 538231(10) = 83677(16)
Отново е аналогично на превръщането при двоичната система.
Пример:
3А5F(16) = ?(10)
F*160 = 15*160 = 15*1 = 15
5*161 = 5*16 = 80
A*162 = 10*162 = 2560
3*163 = 12288
3A5F(16) 12288 + 2560 + 80 + 15 = 14943(10)
3. Осмична бройна система
Това е бройна система с основа 8 и използва цифрите от 0 до 7.
Тази бройна система се използва по-рядко.
Преобразуването от десетична в осмична бройна система (и обратното) е аналогично както при другите бройни системи.