Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Vidok
37 / 37 / 2
Регистрация: 03.09.2011
Сообщений: 279
#1

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

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

Помогите пожалуйста написать: Подсчитайте кол. нулей в 32-разрядном двоичном машинном слове. На С++.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2011, 01:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Количество нулей в 32 разрядном слове (C++):

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

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

Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах (Pascal -> С++) - C++
Var i: longint; N: integer; begin write('input Nomber, pleeeaaase: '); readln(i); N:= 0; while ((i mod 10) = 0) do ...

Массив состоит из нулей и единиц. Сформировать массив,состоящий из нулей и подсчитать их количество - C++
Массив А состоит из 0-й и 1-ц.сформировать одномерный массив В(К),состоящий из нулей,и подсчитать их количество

Подсчитать количество положительных и отрицательных чисел и количество нулей в массиве - C++
Имеется массив А из N произвольных чисел. Используя, операторы цикла составить программу.Подсчитать количество положительных и...

Количество букв в слове, количество предложений, самое длинное слово в предложении - C++
Как написать прогу, которая бы указывала количество букв в слове, вводимое пользователем, количество предложений, самое длинное слово в...

8
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.12.2011, 01:26 #2
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
37 / 37 / 2
Регистрация: 03.09.2011
Сообщений: 279
14.12.2011, 01:27  [ТС] #3
миллион спасибо!
0
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.12.2011, 01:35 #4
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
37 / 37 / 2
Регистрация: 03.09.2011
Сообщений: 279
14.12.2011, 01:45  [ТС] #5
А где можно почитать подробно и разобраться? Код ясен, но что там происходит на машинном уровне не очень.

Добавлено через 4 минуты
Еще вопрос. Куда здесь можно прилепить assert?
0
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.12.2011, 01:52 #6
"Мета" вариант решения:
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
37 / 37 / 2
Регистрация: 03.09.2011
Сообщений: 279
14.12.2011, 01:57  [ТС] #7
Спасибо) но у меня в университете пока процедурное программирование на базе С++. По этому чем проще, тем лучше)

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

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

Не по теме:

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

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

Не по теме:

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

0
14.12.2011, 02:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2011, 02:10
Привет! Вот еще темы с ответами:

Определить количество слов в заданном тексте и количество символов в каждом слове - C++
Определить количество слов в заданном тексте и количество символов в каждом слове

Вводится предложение. Подсчитать количество слов и подсчитать количество букв в самом длинном слове - C++
Неправильно считает количество букв в наибольшем слове. #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cstring&gt; using...

Определить длину данного и количество Букв «а». Вывести имя и количество букв в третьем слове - C++
Ввести фамилию , имя и отчество как одно текстовое данное. Определить длину данного и количество Букв « а » в нем . Вывести имя и...

Подсчитать количество введенных нулей - C++
С клавиатуры вводятся 12 чисел, все нечетные и нулевые подсчитываются


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru