Другие языки программирования и технологии

как переводить числа в 2-чную, 8 и 16ричную системы счисления?

если разово- в калькуляторе win переключаешься в режим программирование, вводишь число, сразу получаешь и двоичное и шестнадцатеричное и какое угодно
ИГ
Ильдар Ганиев
8 170
Лучший ответ
Оценил. 1ричная система, это уже не круто
Alex Достоевский
Alex Достоевский
88 760
Брать степени основания нужной системы счисления, делить на них исходное число, записывать результат.
Для примера возьмём степени восьмёрки: 512-64-8
Допустим, нам дано число меньше, чем 4096 (просто, это уже следующая степень восьмёрки). Возьмём для примера 1172
Теперь будем делить это число последовательно на те числа, которые я привёл.
Сначала на 512. Получим 2. Значит первая цифра 2.
Теперь нужно вычесть 2x512 из нашего числа. Получается 148
Теперь делим на 64. Получается 2. Значит, вторая цифра тоже 2.
Вычитаем 2x64, получается 20
Дальше делим на 8. Получается 2. Честно, число наобум выбирал.
Вычитаем 2x8 из 20, остаётся 4. Так как 4 меньше восьмёрки, её записываем как есть. Получили число 2224 в восьмеричной системе счисления.

То же самое для шестнадцатеричной системы. Берём степени 16:
4096-256-16
Так как число меньше, чем 4096, значит этого разряда у нас не будет. Делим сразу на 256.
Получаем 4. Вычитаем 1024, получаем 148, как и в тот раз. Но нам осталось разделить только на 16, поэтому делим. Получается 9. И остаток 4, который на 16 уже нет смысла делить.
Значит результат — 494
Тут нюанс: не стоит забывать, что в шестнадцатеричной системе можно записывать цифры вплоть до 15. Поэтому, если результат деления нацело равен 11, то записываем цифру B, а не "11".

С двоичной тоже всё просто. Только возьмём число поменьше. Пускай, это 27.
Степени двойки, которые меньше, чем 27, — это 16-8-4-2
Значит, делим 27 на все эти числа поочерёдно, вычитая их после деления.
27/16 = 1
27-16*1 = 9
9/8 = 1
9-8*1 = 1
1 меньше четвёрки и меньше двойки, поэтому на месте и того и другого запишем по нулю! Не просто пропустим, а запишем ноль. В предыдущих примерах тоже так было бы, если бы очередное число оказалось меньше, чем то, на что его нужно поделить. Нужно помнить, что сколько в ряду степеней чисел, которые меньше данного нам числа, столько и будет цифр в ответе. Правда, я во всех этих рядах не писал единицу, кторая представляет собой любое число в нулевой степени, поэтому у меня ряд на единицу короче, чем надо. На самом деле нулевая степень нам нужна, поэтому 512-64-8-1 и так далее.
Вернёмся к числу. Оставшуюся единицу, не выкидываем, а запишем после двух получившихся нолей.
Итого у нас получилось 11001 в двоичной системе. Легко проверить сложением: 1001 — это 9. Однёрка на 5-м месте справа — это 16. Сумма 9 и 16 даёт то, что было изначально.
Sergei Soroka
Sergei Soroka
58 874