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

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

Войти
Регистрация
Восстановить пароль
 
ETALONMAX
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 9
#1

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

23.04.2013, 21:51. Просмотров 462. Ответов 7
Метки нет (Все метки)

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

... В четных байтах числа в двоичной системе переместить нулевые биты в старшие биты, а в нечетных байтах – в младшие ... - C++
Доброго времени суток всем, столкнулся с проблемой по С++,требуется написать программу: которая получает 1)случайное целое типа int,...

Const char* и нулевые биты - C++
Столкнулась с такой проблемой: есть переменная типа string, например string str = "A"; Мне требуется расширить ее до 16 бит, для этого...

Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести результат - C++
нужна помощь в битовых операциях.Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести результат.

Инвертировать биты числа - C++
установить в числе 347 биты если они не установлены,а если установлены снять

Создать функцию которая выводит на экран, числа от 1 до указанного числа - C++
Создать функцию которая выводит на экран, числа от 1 до указанного числа Вот я это написал: #include <iostream> #include <conio.h>...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
23.04.2013, 22:17 #2
Ну вот с помощью этой функции преобразуй число в строку и подсчитай в ней ноли
http://www.cplusplus.com/reference/cstdlib/itoa/
dr.curse
388 / 344 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
23.04.2013, 22:19 #3
Цитата Сообщение от kravam Посмотреть сообщение
Ну вот с помощью этой функции преобразуй число в строку и подсчитай в ней ноли
http://www.cplusplus.com/reference/cstdlib/itoa/
а что побитовые операции уже отменили?
nonedark2008
903 / 642 / 131
Регистрация: 28.07.2012
Сообщений: 1,733
23.04.2013, 22:20 #4
ETALONMAX, функция __popcnt подсчитывает кол-во единичных бит. Отсюда легко получить кол-во нулевых бит.
ETALONMAX
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 9
23.04.2013, 22:27  [ТС] #5
Напиши пожалуйста код, я в С++ далек, серьезно Благодарочка!
yoghurt92
374 / 345 / 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
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
23.04.2013, 22:41 #7
Цитата Сообщение от aram_gyumri Посмотреть сообщение
а что побитовые операции уже отменили?
Что-то я упустил где-то, ни одной не знаю, которая подсчитывала количество нулевых бит.
nonedark2008
903 / 642 / 131
Регистрация: 28.07.2012
Сообщений: 1,733
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. Либо, как писали выше, через побитовые операции.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2013, 22:48
Привет! Вот еще темы с ответами:

Инвертировать все биты в старшем байте числа. - C++
Инвертировать все биты в старшем байте числа.

Поменять местами 1 и 3 биты с 4 и 6 битами каждого числа. - C++
Нужно срочно написать программу. Помогите! Задание:В массиве Х чисел типа short обработать каждое число согласно условиям:Поменять...

Обращение к элементам массива через биты некоторого числа - C++
Пусть есть массив Mass из 10 элементов и число А = 510 = 0...0 01012. Мне надо обратиться к 0 и 2 элементам (или к 7 и 9 - это как...

В каждом байте числа переместить единичные биты в конец - C++
Помогите пожалуйста с решением задач. Очень надо. На Си никогда не писал, сам сделать не смогу. 1. В каждом байте числа переместить...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.04.2013, 22:48
Ответ Создать тему
Опции темы

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