Перевод из десятиричной системы счисления в нормальнуюЕсли переводить двоичную систему в десятиричную, то используй формулу:
B5x32 + B4x16 + B3x8 + B2x4 + B1x2 +B0
где B5 - самый старший бит (с левого конца),
B0 - это самый младший бит (с правого конца).
В случае 110100:
B5 B4 B3 B2 B1 B0
1__1__0__1__0__0
1x32 + 1x16 + 0x8 + 1x4 + 0x2 + 0 =
32 + 16 + 0 + 4 + 0 + 0 = 52
Число "110100" в двоичной это 52 в десятиричной.
Если переводить десятиричную систему в двоичную:
Делишь число на 2, если делится без остатка то пишешь "0"; если делится с остатком то пишешь "1" а остаток отбрасываешь.
Затем полученное новое число опять делишь на 2 по этому же правилу, только новые "0" или "1" приписываешь СЛЕВА.
И так далее до тех пор пока после деления и отбрасывания остака не останется всего НОЛЬ.
Например десятиричное число 57:
57:2 =28,5
Разделилось с остатком поэтому пишем "1", остаток отбрасываем
28:2=14
Разделилось без остатка, добавляем "0" СЛЕВА и получаем "01".
14:2=7
Без остатка, добавляем "0" СЛЕВА и получаем "001".
7:2=3,5
С остаком, добавляем "1" СЛЕВА и получаем "1001", остаток отбрасываем
3:2=1,5
С остатком, добавляем "1" СЛЕВА и получаем "11001", остаток отбрасываем
1:2=0,5
С остатком, добавляем "1" СЛЕВА и получаем "111001" , остаток отбрасываем
От исходного числа остался только ноль - операция закончена.
Десятиричное число 57 выглядит как "111001" в двоичной форме.
Если двоичное число получилось короткое (то есть знаков меньше чем битов в опции) то просто добавь нули СЛЕВА.
Например десятиричное 3 в двоичной форме "11".
Для случая с опциями добавь нули СЛЕВА "000011"
Если надо перевести в двоичную систему счисления дробь, то:
Для начала записываем ее как десятичную, к примеру
0,25 и начинаем умножать на 2
0,50
1,00
итого получаем 0,01
@темы:
Колдун Канмаклауд,
Гордиццо собой,
Мысли вслух,
Цитаты
Вот пример:
число 5603 в десятичной системе переведём в двоичную систему.
Находим самую большую степерь двойки, которая меньше нашего числа. 2 в 12-ой степени - 4096
ставим еденицу за эту степень и отнимаем 3096 от изначального числа 5603.
Предварительный результат: 1
Отнимаем 4096
5603 - 4096 = 1507
Дальше работаем с результатом, тоесть с остатком - числом 1507
Следующая степень двойки - 11-ая, тоесть 4096/2 = 2048
2048 в наш остаток не влезает, значит ставим за эту цифру 0
Предварительный результат: 10
следующая степень 10-ая = 1024. 1024 влезает, значит ставим за эту степень еденицу и отнимаем 1507 - 1024 = 483
Предварительный результат: 101
следующая степень = 512. Не влезает
Предварительный результат: 1010
256 влезает. 483 - 256 = 227
Предварительный результат: 10101
128 влезает. 227 - 128 = 99
Предварительный результат: 101011
64 влезает. 99 - 64 = 35
Предварительный результат: 1010111
32 влезает. 35 - 32 = 3
Предварительный результат: 10101111
16 не влезает.
Предварительный результат: 101011110
8 не влезает.
Предварительный результат: 1010111100
4 не влезает
Предварительный результат: 10101111000
2 влезает. 3 - 2 = 1
Предварительный результат: 101011110001
1 влезает. 1 - 1 = 0
101011110001
Предварительный результат:
Но 5603 это довольно долгий пример, хотя отнимать всё равно помоему удобнее деления, тем более с остатком
А если число попроще, скажем 4152, всё идет кужа легче
4152 - 4096 = 56
Предварительный результат: 1000000
32 первая степень двойки, которая влезает в остаток
Остальные степени - 2048, 1024, 512, 256, 128 и 64 не влезали в остаток, поэтому вместо них ставим 6 нулей, по одному за каждую
ставим единицу за 32
Предварительный результат: 10000001
56 - 32 = 24
16 тоже подходит
Предварительный результат: 100000011
24 - 16 = 8
8 тоже подходит
Предварительный результат: 1000000111
8 - 8 = 0
4, 2 и 1 - тоесть вторая, первая и нулевая степень двойки не влезают в наш остаток 0, поэтому за каждую из них ставим три нуля
Результат: 1000000111000
Идеально, если число всего чуть чуть больше степени двойки. например 1027
отнимаем 1024, тоесть 10-ую степень. Остаётся 3
Ставим единчку за десятую, нули за девятую, восьмую, шестую, пятую, четвёртую, третью и вторую степени. Два в первой даст нам 2 а два в нулевой даст нам 1. Тоесть в сумме 3. Поэтому добавляем последние две единички
10000000011