Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для Vidok
38 / 38 / 4
Регистрация: 03.09.2011
Сообщений: 279

Количество нулей в 32 разрядном слове

14.12.2011, 01:12. Показов 1951. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста написать: Подсчитайте кол. нулей в 32-разрядном двоичном машинном слове. На С++.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.12.2011, 01:12
Ответы с готовыми решениями:

Приложение на C#, работающее c БД Oracle в 32-разрядном режиме Windows 7, не работает в 64-разрядном
До этого ни каких проблем не было. Приложение на C#, скомпилированное в режиме "CPU ANY", и предназначенное для обработки БД...

Длина каждого слова. Количество цифр в слове. Количество гласных прописных букв в слове
Срочно нужна помощь начинающему програмисту!!! Си Ввести текстовую строку с помощью функции gets, слова в строке отделяются пробелами...

Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах
#include <iostream> #include<conio.h> main() { setlocale(LC_ALL, "Russian"); int N,digit = 0; int count = 0; std::...

8
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
14.12.2011, 01:26
C++
1
2
3
4
5
6
7
8
9
10
template<typename T>
size_t NumberOfZeroBit(T number) {
  size_t result = 0;
 
  for (T mask = 0x1; mask; mask <<= 1)
    if ((number & mask) == 0)
      ++result;
 
  return result;
}
1
 Аватар для Vidok
38 / 38 / 4
Регистрация: 03.09.2011
Сообщений: 279
14.12.2011, 01:27  [ТС]
миллион спасибо!
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
14.12.2011, 01:35
Vidok, нашел ошибки в коде, поправил, сообщение обновил. Пример использования:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
template<typename T>
size_t NumberOfZeroBit(T number) {
  size_t result = 0;
 
  for (T mask = 0x1; mask; mask <<= 1)
    if ((number & mask) == 0)
      ++result;
 
  return result;
}
 
int main() {
  std::cout << NumberOfZeroBit(0) << " " << NumberOfZeroBit(2) << " " << NumberOfZeroBit(3) << std::endl;
}
1
 Аватар для Vidok
38 / 38 / 4
Регистрация: 03.09.2011
Сообщений: 279
14.12.2011, 01:45  [ТС]
А где можно почитать подробно и разобраться? Код ясен, но что там происходит на машинном уровне не очень.

Добавлено через 4 минуты
Еще вопрос. Куда здесь можно прилепить assert?
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
14.12.2011, 01:52
"Мета" вариант решения:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
 
namespace Implementation
{
   template<unsigned value, unsigned mask>
   struct NumberOfZeroBitHelper
   {
   private:
      static const bool IsZeroBit = (value & mask) == 0;
   public:
      static const size_t Value = IsZeroBit + NumberOfZeroBitHelper<value, mask << 1>::Value;
   };
   
   template<unsigned value>
   struct NumberOfZeroBitHelper<value, 0>
   {
      static const size_t Value = 0;
   };
}
 
template<unsigned value>
struct NumberOfZeroBit
{
   static const size_t Value = Implementation::NumberOfZeroBitHelper<value, 0x1>::Value;
};
 
int main() { 
 
   std::cout << NumberOfZeroBit<0>::Value << " " 
             << NumberOfZeroBit<1>::Value << " " 
             << NumberOfZeroBit<2>::Value << " " 
             << NumberOfZeroBit<3>::Value << std::endl;
}
Цитата Сообщение от Vidok Посмотреть сообщение
Куда здесь можно прилепить assert?
Пожалуй, некуда да и не за чем.
Цитата Сообщение от Vidok Посмотреть сообщение
А где можно почитать подробно и разобраться?
В любой книге по Си/C++ в разделе битовые операции.
1
 Аватар для Vidok
38 / 38 / 4
Регистрация: 03.09.2011
Сообщений: 279
14.12.2011, 01:57  [ТС]
Спасибо) но у меня в университете пока процедурное программирование на базе С++. По этому чем проще, тем лучше)

Добавлено через 51 секунду
Но вот доцент говорит можно

Добавлено через 2 минуты
У меня возник вариант прилепления assert. От 32 отнять результат программы которая считает количество единиц и сравнить с результатом количества нулей. Как бы немного глуповато, но все таки.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
14.12.2011, 02:08
Цитата Сообщение от Vidok Посмотреть сообщение
Но вот доцент говорит можно
assert является механизмом проверки утверждений. Утверждения относительно функций это условия, которые должны быть истинны перед вызовом функции (предусловия) или после вызова(постусловия). Т.е. предусловия это то, что необходимо функции для выполнения своей работы, постусловия же это то, что функция гарантирует по результатам своего выполнения при условии соблюдении предусловий. К примеру в случае с функцией удаления файла, предусловием будет являтся наличие указанного файла, а постусловием, то что файл будет удален.
Теперь вопрос: при несоблюдении каких условий функция вычисления количества сброшенных бит не сможет выполнить свою работу?

Не по теме:

Опыт показывает, что люди с научными званиями в области информатики обычно весьма далеки от реального мира разработки ПО.

0
 Аватар для Vidok
38 / 38 / 4
Регистрация: 03.09.2011
Сообщений: 279
14.12.2011, 02:10  [ТС]
Цикл подсчета закончен точнее незаконченный.

Не по теме:

Может быть и так, а может это просто дать возможность студентам подумать

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.12.2011, 02:10
Помогаю со студенческими работами здесь

Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах
Дано натуральное число N (N &gt; 9). Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах. Пример. N = 10 025...

Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах
Дано натуральное число N (N &gt; 9). Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах. Пример. N = 10 025...

Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах
Дано натуральное число N (N &gt; 9). Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах. Пример. N = 10 025...

Определите количество нулей в записи числа кроме нулей в его младших разрядах
Дано натуральное число N(N&gt;9). Определите количество нулей в записи числа кроме нулей в его младших разрядах. Пример. N = 10 025 000....

Определите количество нулей в записи числа кроме нулей в его младших разрядах.
Дано натуральное число N(N&gt;9). Определите количество нулей в записи числа кроме нулей в его младших разрядах. Пример. N = 10 025 000....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru