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

Вопрос как к математикам так и к программистам...имеем числа 1,2,4,8,16,32,64,128имеем какое либо число, скажем 130

Простой алгоритм перевода в двоичную систему счисления.
Результат можно получить деля на два с остатком.
Тут не вполне ясно в каком виде надо получить результат, поэтому опишу процедуру в общем виде.
возьмём число 77
делим на 2
38 ост 1
Раз есть остаток, значит есть 1
делим 38 на 2
19 ост 0
остатка нет - значит нет 2
делим 19 на 2
9 ост 1
остаток есть - значит есть 4
делим 9 на 2
4 ост 1
остаток есть - значит есть 8
4 на 2
2 ост 0
остатка нет - нет 16
2 на 2
1 ост 0
остатка нет - нет 32
1 на 2
0 остаток 1
остаток есть - есть 64
=======
пришли к нулю, теперь подсчитаем, что у нас есть
1 + 4 + 8 + 64 = 77
Marcel Stoian
Marcel Stoian
4 394
Лучший ответ
конечно есть это всё называется двоичный или бинарный код
вычитай из своего числа максимально что сможеш и всё получится
Влад Потоптаев Хм, ну это понятно, но что то додуматься не могу как бы всё это небольшим кодом в цикл вставить....

в общем имеем мы скажем 11100 ...

А как его разломить на составляющие числа? пусть даже бинарные? с виду то сразу понятно что это 16 + 8 + 4 Но как вот обработать кодом это что то голова сегодня не думает, не подскажите алгоритм?
переводим 130 в двоичную систему.
сопоставляем цепочке 11000010101....цепочку 1 2 3 4 8 16 32 ...
и так далее.
имеем одномерный массив, заполненный по типу a[n]= 2*a[n-1], далее берем нужное число, пробегаемся по массиву, ищем число, которое максимально близко снизу к нашему, вычитаем, запоминаем получившееся, делаем то же самое для получившегося, повторяем пока не получим 0, потом представляем число в виде суммы тех элементов массива, которые получили в ходе оценки снизу

Похожие вопросы