Перевод чисел в различные системы счисления
Рассмотрим пример перевода числа AC08.1FB из шестнадцатиричной в двоичную систему счисления в однобайтовое в беззнаковое
Данный перевод возможен двумя способами: прямой перевод и через десятичную систему.
Выполним прямой перевод.
Выполним прямой перевод из шестнадцатиричной в двоичную вот так:
Выполним перевод через десятичную систему счисления.
Выполним перевод в десятичную систему счисления вот так:
= 10∙4096 + 12∙256 + 0∙16 + 8∙1 + 1∙0.0625 + 15∙0.00390625 + 11∙0.000244140625
= 40960 + 3072 + 0 + 8 + 0.0625 + 0.05859375 + 0.002685546875
= 44040.12377929687510
Получилось: AC08.1FB16 = 44040.12377929687510
Переведем число 44040.12377929687510 в двоичное вот так:
Целая часть числа находится делением на основание новой системы счисления:
| 44040 | 2 | ||||||||||||||||
| -44040 | 22020 | 2 | |||||||||||||||
| 0 | -22020 | 11010 | 2 | ||||||||||||||
| 0 | -11010 | 5505 | 2 | ||||||||||||||
| 0 | -5504 | 2752 | 2 | ||||||||||||||
| 1 | -2752 | 1376 | 2 | ||||||||||||||
| 0 | -1376 | 688 | 2 | ||||||||||||||
| 0 | -688 | 344 | 2 | ||||||||||||||
| 0 | -344 | 172 | 2 | ||||||||||||||
| 0 | -172 | 86 | 2 | ||||||||||||||
| 0 | -86 | 43 | 2 | ||||||||||||||
| 0 | -42 | 21 | 2 | ||||||||||||||
| 1 | -20 | 10 | 2 | ||||||||||||||
| 1 | -10 | 5 | 2 | ||||||||||||||
| 0 | -4 | 2 | 2 | ||||||||||||||
| 1 | -2 | 1 | |||||||||||||||
| 0 | |||||||||||||||||
Направление взгляда | |||||||||||||||||
Дробная часть числа находится умножением на основание новой системы счисления:
Направление взгляда | |
| 0. | 123779296875*2 |
| 0 | .2476*2 |
| 0 | .4951*2 |
| 0 | .9902*2 |
| 1 | .98*2 |
| 1 | .961*2 |
| 1 | .922*2 |
| 1 | .844*2 |
| 1 | .688*2 |
| 1 | .375*2 |
| 0 | .75*2 |
В результате преобразования получилось:
Вы указали что размер вашего числа 1 байт.
На данный момент отрицательные дробные числа не поддерживаются. Поэтому в дальнейшем переводе участвует только целая часть числа.
Уберем лишние биты с учётом знакового бита вот так: