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

Нулевые биты указанного числа - C++

Восстановить пароль Регистрация
 
ETALONMAX
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 9
23.04.2013, 21:51     Нулевые биты указанного числа #1
Форумчане, выручайте, нужно написать функцию, которая для заданного целого числа x вычисляет количество нулевых битов в этом числе (в коде возможно использование void) . Спасибо огромное за помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2013, 21:51     Нулевые биты указанного числа
Посмотрите здесь:

... В четных байтах числа в двоичной системе переместить нулевые биты в старшие биты, а в нечетных байтах – в младшие ... C++
Инвертировать все биты в старшем байте числа. C++
Поменять местами 1 и 3 биты с 4 и 6 битами каждого числа. C++
C++ Создать функцию которая выводит на экран, числа от 1 до указанного числа
Обращение к элементам массива через биты некоторого числа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
23.04.2013, 22:17     Нулевые биты указанного числа #2
Ну вот с помощью этой функции преобразуй число в строку и подсчитай в ней ноли
http://www.cplusplus.com/reference/cstdlib/itoa/
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
23.04.2013, 22:19     Нулевые биты указанного числа #3
Цитата Сообщение от kravam Посмотреть сообщение
Ну вот с помощью этой функции преобразуй число в строку и подсчитай в ней ноли
http://www.cplusplus.com/reference/cstdlib/itoa/
а что побитовые операции уже отменили?
nonedark2008
623 / 501 / 92
Регистрация: 28.07.2012
Сообщений: 1,338
23.04.2013, 22:20     Нулевые биты указанного числа #4
ETALONMAX, функция __popcnt подсчитывает кол-во единичных бит. Отсюда легко получить кол-во нулевых бит.
ETALONMAX
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 9
23.04.2013, 22:27  [ТС]     Нулевые биты указанного числа #5
Напиши пожалуйста код, я в С++ далек, серьезно Благодарочка!
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
23.04.2013, 22:33     Нулевые биты указанного числа #6
ETALONMAX, как-то так)

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
34
35
36
37
38
39
40
41
#include <iostream>
#include <iomanip>
using namespace std;
 
int displayBits(void *);
 
int main()
{
    unsigned number;
 
    cout << "Enter the number: ";
        cin >> number;
 
    cout << "\nNumber: " << displayBits(&number);
 
    cout << "\n\n";
    return 0;
}
 
int displayBits(void *value)
{
    int size = sizeof(value) * 8, *temp = (int*) value;
    unsigned c, displayMask = 1 << (size - 1), number(0);
 
    cout << setw(7) << "value = ";
 
    for(c = 1; c <= size; c++)
    {
        if((*temp & displayMask) == 0)
            ++number;
 
        cout << (*temp & displayMask ? '1' : '0');
            *temp <<= 1;
 
        if(c % 8 == 0)
            cout << " ";
    }
 
    cout << "\n";
    return number;
}
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
23.04.2013, 22:41     Нулевые биты указанного числа #7
Цитата Сообщение от aram_gyumri Посмотреть сообщение
а что побитовые операции уже отменили?
Что-то я упустил где-то, ни одной не знаю, которая подсчитывала количество нулевых бит.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2013, 22:48     Нулевые биты указанного числа
Еще ссылки по теме:

Const char* и нулевые биты C++
C++ Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести результат
Побитовые операции. Получить целое число, отбросив нечётные биты данного числа k C++

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

Или воспользуйтесь поиском по форуму:
nonedark2008
623 / 501 / 92
Регистрация: 28.07.2012
Сообщений: 1,338
23.04.2013, 22:48     Нулевые биты указанного числа #8
Вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <intrin.h>
#include <iostream>
 
using namespace std;
 
void main( void )
{
  unsigned num = 9;
  cout << "Number:" << num << '.' << endl;
  cout << "Number of zero bits: " << 8 * sizeof(unsigned) - __popcnt(num) << endl;
  system("pause");
}
Добавлено через 6 минут
Еще можно получить нужное через std::bitset. Либо, как писали выше, через побитовые операции.
Yandex
Объявления
23.04.2013, 22:48     Нулевые биты указанного числа
Ответ Создать тему
Опции темы

Текущее время: 01:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru