Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2012, 18:40   #1
Oinevle
 
Регистрация: 08.11.2012
Сообщений: 7
По умолчанию Анализ двоичных чисел. TCL/Python

Реализовать на языке TCL/Python следующий алгоритм:
Сумма единичных бит в целом двоичном числе (переменная задаётся ввиде целого 32битного числа).

Лучше на TCL, но не принципиально.
Заранее спасибо всем няшам, что отпишутся.
Oinevle вне форума Ответить с цитированием
Старый 08.11.2012, 19:07   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Код:
Переменная под сумму, изначально ноль.
Пока число не ноль,
  Если число нечётное - увеличить сумму на 1;
  Поделить число нацело на 2
Всё, сумма бит готова.
Abstraction вне форума Ответить с цитированием
Старый 08.11.2012, 19:23   #3
Oinevle
 
Регистрация: 08.11.2012
Сообщений: 7
По умолчанию

a=int(raw_input('Введите 32 битное целое число'));
print sum([int(_) for _ in bin(a)[2:]])

Как-то так получилось. Верно?
Oinevle вне форума Ответить с цитированием
Старый 08.11.2012, 22:02   #4
Oinevle
 
Регистрация: 08.11.2012
Сообщений: 7
По умолчанию

Хм, итак, на питоне реализовано правильно?
И на TCL хотелось бы решение посмотреть всё таки...
Oinevle вне форума Ответить с цитированием
Старый 08.11.2012, 23:50   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Хм, итак, на питоне реализовано правильно?
Возьмите интерпретатор да посмотрите, зачем у кого-то другого спрашивать?
У меня "чистый" Python 3.0 не опознал raw_input. Вторая строка в форме
Код:
print(sum([int(_) for _ in bin(a)[2:]]))
делает что нужно. Но при этом Вы используете bin - смотрите сами, насколько это разрешено правилами.

Вот пример кода без каких-либо внешних функций:
Код:
def sum_of_bits(n):
    def partial_sum(acc, n):
        if(n%2==1):
            return partial_sum(acc+1, (n-1)/2)
        if(n==0):
            return acc
        return partial_sum(acc, n/2)

    return partial_sum(0,n)
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
деление двоичных чисел bronik4 Помощь студентам 1 21.06.2011 16:57
Сложение двоичных чисел!!! 2008kedr2008 Общие вопросы C/C++ 4 11.05.2011 14:57
генерация псевдослучайных двоичных чисел на С++ IRINA89 Помощь студентам 2 16.05.2010 11:56
сложение 10 двоичных чисел sssvetlaya Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 10.11.2009 09:32