Форум программистов, компьютерный форум CyberForum.ru

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

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

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

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

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

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

Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах (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++
Как написать прогу, которая бы указывала количество букв в слове, вводимое пользователем, количество предложений, самое длинное слово в...

Записать число в 32-разрядном массиве - C++
Помогите разобраться, пожалуйста: Попытки: Записать число в 32-разрядном символьном массиве и вывести: #include "stdafx.h" #include...

Простые числа и количество нулей - C++
Задание: Нужно ввести число N с клавиатуры. Вывести на экран простые числа до N. И среди них найти число с максимальным числом нулей. При...

Посчитать количество нулей в числе - C++
⦁ Пользователь вводит число. Определить количество цифр в этом числе, посчитать их сумму и среднее арифметическое. Определить количество...

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

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

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

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

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2011, 02:10     Количество нулей в 32 разрядном слове
Еще ссылки по теме:

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

Количество нулей в записи числа - C++
Помогите пожалуйста написать эдакое... Дано натуральное число n. Подсчитать количество нулей в записи данного числа в десятичной системе...

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

Подсчитать количество нулей в массиве - C++
Хайль, пипль!Снова прошу помощи. Заранее спасибо, кто поможет. мне необходимо подсчитать кол-во нулей в массиве . в приведенном ниже...

Найти количество нулей в одномерном массиве - C++
В одномерном массиве состоящем из n действительных элементов вычислить: 1) Количество элементов массива равных нулю 2) Сумму элементов...


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

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

Не по теме:

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

Yandex
Объявления
14.12.2011, 02:10     Количество нулей в 32 разрядном слове
Ответ Создать тему
Опции темы

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