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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2017, 14:10   #1
Ksenia2019
 
Регистрация: 15.07.2017
Сообщений: 8
Вопрос Как узнать, сколько бит ??

Здравствуйте. Дана задача
Дано натуральное число меньше 16. Посчитать количество его единичных битов. Например, если дано число 9, запись которого в двоичной системе счисления равна 10012 (подстрочная цифра 2 справа от числа означает, что оно записано в двоичной системе счисления), то количество его единичных битов равно 2.

Я наверное туплю, но не могу сообразить, как понять "сколько единичных битов в числе"? например в числе 12,18. Подскажите пожалуйста
Ksenia2019 вне форума Ответить с цитированием
Старый 22.07.2017, 14:35   #2
agmag
Пользователь
 
Регистрация: 15.07.2017
Сообщений: 31
По умолчанию

При работе с битами, полезно пользоваться калькулятором:
http://infocisco.ru/numeral_system.php
Число 12 в двоичном виде 1100
Число 18 в двоичном виде 10010

Сначала, для практики, надо вывести биты числа:
Код:
var a:integer;
begin
	a:=12;
	
	writeln((a div 1) mod 2); //бит 0-ой справа
	writeln((a div 2) mod 2); //бит 1-ый справа
	writeln((a div 4) mod 2); //бит 2-ой справа
	writeln((a div 8) mod 2); //бит 3-ий справа
end.
Потом суммировать:
Код:
var a:integer;
sum:integer;
begin
	sum:=0;
	a:=12;
	
	writeln((a div 1) mod 2); //бит 0-ой справа
	writeln((a div 2) mod 2); //бит 1-ый справа
	writeln((a div 4) mod 2); //бит 2-ой справа
	writeln((a div 8) mod 2); //бит 3-ий справа
	
	sum += (a div 1) mod 2;
	sum += (a div 2) mod 2;
	sum += (a div 4) mod 2;
	sum += (a div 8) mod 2;
	
	writeln('sum:',sum);

end.
То же, но для десятичной системы счисления(вывод цифр числа):
Код:
var a:integer;
begin
	a:=3557;
	
	writeln((a div 1) mod 10);    //цифра 0-ая справа (3557 mod 10)
	writeln((a div 10) mod 10);   //цифра 1-ая справа (355 mod 10)
	writeln((a div 100) mod 10);  //цифра 2-ая справа (35 mod 10)
	writeln((a div 1000) mod 10); //цифра 3-ая справа (3 mod 10)

end.

Последний раз редактировалось agmag; 22.07.2017 в 14:44.
agmag вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать, сколько времени работает программа? Nhpro C# (си шарп) 1 10.01.2017 19:18
Как узнать сколько сводных таблиц и сколько срезов на рабочем листе? RISagitov Microsoft Office Excel 0 31.10.2015 19:30
Как узнать сколько кнопок на рабочем листе? RISagitov Microsoft Office Excel 7 26.10.2015 15:51
Как узнать, сколько в тексте пробелов Скрипт Microsoft Office Word 13 11.02.2013 13:58
Как узнать сколько RAM хавает процесс WOWka777 Общие вопросы C/C++ 5 01.02.2011 17:02