1с преобразовать число в двоичное число
Данный конвертер переводит числа между наиболее популярными системами счисления: десятичной, двоичной, восьмеричной, шестнадцатеричной.
Система счисления - это способ представления числа. Одно и то же число может быть представлено в различных видах. Например, число 200 в привычной нам десятичной системе может иметь вид 11001000 в двоичной системе, 310 в восьмеричной и C8 в шестнадцатеричной.
Существуют и другие системы счисления, но мы не стали включать их в конвертер из-за низкой популярности.
Для указания системы счисления при записи числа используется нижний индекс, который ставится после числа:
20010 = 110010002 = 3108 = C816
Кратко об основных системах счисления
Десятичная система счисления. Используется в повседневной жизни и является самой распространенной. Все числа, которые нас окружают представлены в этой системе. В каждом разряде такого числа может использоваться только одна цифра от 0 до 9.
Двоичная система счисления. Используется в вычислительной технике. Для записи числа используются цифры 0 и 1.
Восьмеричная система счисления. Также иногда применяется в цифровой технике. Для записи числа используются цифры от 0 до 7.
Перевод в десятичную систему счисления
Преобразовать число из любой системы счисления в десятичную можно следующим образом: каждый разряд числа необходимо умножить на X n , где X - основание исходного числа, n - номер разряда. Затем суммировать полученные значения.
Перевод из десятичной системы счисления в другие
Делим десятичное число на основание системы, в которую хотим перевести и записываем остатки от деления. Запишем полученные остатки в обратном порядке и получим искомое число.
Переведем число 37510 в восьмеричную систему:
Перевод из двоичной системы в восьмеричную
Для перевода в восьмеричную систему нужно разбить двоичное число на группы по 3 цифры справа налево. В последней (самой левой) группе вместо недостающих цифр поставить слева нули. Для каждой полученной группы произвести умножение каждого разряда на 2 n , где n - номер разряда.
11012 = (001) (101) = (0*2 2 + 0*2 1 + 1*2 0 ) (1*2 2 + 0*2 1 + 1*2 0 ) = (0+0+1) (4+0+1) = (1) (5) = 158Так же как и в первом способе разбиваем число на группы. Но вместо преобразований в скобках просто заменим полученные группы (триады) на соответствующие цифры восьмеричной системы, используя таблицу триад:
Триада | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
---|---|---|---|---|---|---|---|---|
Цифра | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Перевод из двоичной системы в шестнадцатеричную
Разбиваем число на группы по 4 цифры справа налево. Последнюю (левую) группу дополним при необходимости ведущими нулями. Внутри каждой полученной группы произведем умножение каждой цифры на 2 n , где n - номер разряда, и сложим результаты.
110102 = (0001) (1010) = (0*2 3 + 0*2 2 + 0*2 1 + 1*2 0 ) (1*2 3 + 0*2 2 + 1*2 1 + 0*2 0 ) = (0+0+0+1) (8+0+2+0) = (1) (10) = 1A16Также как и в первом способе разбиваем число на группы по 4 цифры. Заменим полученные группы (тетрады) на соответствующие цифры шестнадцатеричной системы, используя таблицу тетрад:
Тетрада | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Цифра | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
Перевод из восьмеричной системы в двоичную
Каждый разряд восьмеричного числа будем делить на 2 и записывать остатки в обратном порядке, формируя группы по 3 разряда двоичного числа. Если в группе получилось меньше 3 разрядов, тогда дополняем нулями. Записываем все группы по порядку, отбрасываем ведущие нули, если имеются, и получаем двоичное число.
Возьмем число 438.Делим последовательно 4 на 2 и получаем остатки 0,0,1. Записываем их в обратном порядке. Получаем 100.
Делим последовательно 3 на 2 и получаем остатки 1,1. Записываем их в обратном порядке и дополняем ведущими нулями до трех разрядов. Получаем 011.
Записываем вместе и получаем 1000112
Используем таблицу триад:
Цифра | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
Триада | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
Каждую цифру исходного восьмеричного числа заменяется на соответствующие триады. Ведущие нули самой первой триады отбрасываются.
Перевод из шестнадцатеричной системы в двоичную
Аналогично переводу из восьмеричной в двоичную, только группы по 4 разряда.
Используем таблицу тетрад:
Цифра | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Тетрада | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
Каждую цифру исходного числа заменяется на соответствующие тетрады. Ведущие нули самой первой тетрады отбрасываются.
Перевод из восьмеричной системы в шестнадцатеричную и наоборот
Такую конвертацию можно осуществить через промежуточное десятичное или двоичное число. То есть исходное число сначала перевести в десятичное (или двоичное), и затем полученный результат перевести в конечную систему счисления.
Две простые простые функции которые конвертируют числа из десятичной системы исчисления в систему исчисления с любым другим основанием и обратно.
Dec в Bin, Oct, Hex и прочие:
тРезультат = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", тЗначение%тОснование + 1, 1) + тРезультат;Bin, Oct, Hex и прочие в Dec:
тРезультат=тРезультат + (Найти("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", Сред(тЗначение, тСимвол, 1))-1) * тМножитель;Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
(оценок: 2, средняя оценка: 3,00 из 5)Перенес в отдельную статью: конвертация в римские цифры и обратно в 1С .
Перенесено в отдельную статью: Excel. Как получить имя столбца по номеру и обратно в 1С
В Функция AnyToDec() посоветовал бы использовать ВРег для тЗначение либо в начале
тЗначение = ВРег(тЗначение)
либо в середине Сред(ВРег(тЗначение), тСимвол, 1)
ну и по мелочи (все равно уже посчитано)
Для тСимвол = 1 По тДлина Цикл
Мой Вариант:
Функция AnyToDec(Значение, Основание = 16)
Перем Результат, ЗначениеДлина, Множитель, ЕстьРазделительДроби, Поз, ТекСимвол;
ЗначениеДлина = СтрДлина(Значение);
Множитель = 1;
ЕстьРазделительДроби = Ложь;
Для й = 1 По ЗначениеДлина Цикл
ИначеЕсли Не ЕстьРазделительДроби И (ТекСимвол = "." Или ТекСимвол = ",") Тогда
Читайте также: