Перевод чисел в различные системы счисления
Рассмотрим пример перевода числа 16E.0D4 из шестнадцатиричной в двоичную систему счисления в однобайтовое в беззнаковое
Данный перевод возможен двумя способами: прямой перевод и через десятичную систему.
Выполним прямой перевод.
Выполним прямой перевод из шестнадцатиричной в двоичную вот так:
Выполним перевод через десятичную систему счисления.
Выполним перевод в десятичную систему счисления вот так:
= 1∙256 + 6∙16 + 14∙1 + 0∙0.0625 + 13∙0.00390625 + 4∙0.000244140625
= 256 + 96 + 14 + 0 + 0.05078125 + 0.0009765625
= 366.051757812510
Получилось: 16E.0D416 = 366.051757812510
Переведем число 366.051757812510 в двоичное вот так:
Целая часть числа находится делением на основание новой системы счисления:
| 366 | 2 | |||||||||
| -366 | 183 | 2 | ||||||||
| 0 | -182 | 91 | 2 | |||||||
| 1 | -90 | 45 | 2 | |||||||
| 1 | -44 | 22 | 2 | |||||||
| 1 | -22 | 11 | 2 | |||||||
| 0 | -10 | 5 | 2 | |||||||
| 1 | -4 | 2 | 2 | |||||||
| 1 | -2 | 1 | ||||||||
| 0 | ||||||||||
Направление взгляда | ||||||||||
Дробная часть числа находится умножением на основание новой системы счисления:
Направление взгляда | |
| 0. | 0517578125*2 |
| 0 | .1035*2 |
| 0 | .207*2 |
| 0 | .4141*2 |
| 0 | .8281*2 |
| 1 | .656*2 |
| 1 | .313*2 |
| 0 | .625*2 |
| 1 | .25*2 |
| 0 | .5*2 |
| 1 | .0*2 |
В результате преобразования получилось:
Вы указали что размер вашего числа 1 байт.
На данный момент отрицательные дробные числа не поддерживаются. Поэтому в дальнейшем переводе участвует только целая часть числа.
Уберем лишние биты с учётом знакового бита вот так: