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

Ввести целое число A и посчитать, сколько единиц в числе с 5 бита по 10 бит, включая эти биты - C++

Восстановить пароль Регистрация
 
Boy18
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 8
01.11.2016, 19:21     Ввести целое число A и посчитать, сколько единиц в числе с 5 бита по 10 бит, включая эти биты #1
УСЛОВИЕ --- Ввести целое число A и посчитать, сколько единиц в числе с 5 бита по 10 бит, включая эти биты.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <stdio.h>
using namespace std;
void main()
{
    char k[31];
    int i = 0, z = 0, value;
    cin >> value;
    _itoa_s(value, k, 2);
    for (int i = 0; i <= 31; i++) {
        cout << k[i];
    }
    
    for (int j = 0; j <= 5; j++)
    {
        if (k[j]== 1) {
            z = z + 1;
        }
 
    }
    cout << "\n" << z << endl;
}
Если честно плохо понимаю битовые операции, но есть огромное желание научиться! Если нашли у меня ошибку укажите на нее и если можно с пояснением, если же хотите предложить свое решение то тоже пожалуйста с объяснением!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2016, 19:21     Ввести целое число A и посчитать, сколько единиц в числе с 5 бита по 10 бит, включая эти биты
Посмотрите здесь:

C++ Преобразование нулей и единиц в целое число
C++ В числе 5672 найти число тысяч, сотен, десятков и единиц
Посчитать сколько двоичных единиц содержит каждое число массива. C++
C++ Посчитать сколько двоичных единиц содержит каждое число
Дано целое число X произвольной разрядности. Опреде-лить, сколько раз в числе встретилась каждая десятичная цифра. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
shilko2013
 Аватар для shilko2013
238 / 215 / 116
Регистрация: 02.04.2016
Сообщений: 814
Завершенные тесты: 1
01.11.2016, 19:23     Ввести целое число A и посчитать, сколько единиц в числе с 5 бита по 10 бит, включая эти биты #2
Вводишь число, потом создаешь bitset из него и считаешь биты
nmcf
4298 / 3719 / 1252
Регистрация: 14.04.2014
Сообщений: 14,541
01.11.2016, 19:26     Ввести целое число A и посчитать, сколько единиц в числе с 5 бита по 10 бит, включая эти биты #3
Где здесь битовые операции?
C++
1
2
char k[33];
_itoa_s(value, k, 33, 2);
В цикле на длину строки ориентироваться, а не на 31.
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1762 / 985 / 60
Регистрация: 29.03.2010
Сообщений: 2,979
01.11.2016, 19:33     Ввести целое число A и посчитать, сколько единиц в числе с 5 бита по 10 бит, включая эти биты #4
ошибку искать лень, раз хотите научиться - давайте учиться...

Битовые операции в С++ представлены набором операторов: << - побитовый сдвиг влево; >> побитовый сдвиг вправо.
С лева от оператора ставится объект над которым будет производиться сдвиг, с права от оператора - кол-во бит, на которое нужно сдвинуть число.

Таким образом, если у нас есть число к примеру 5, что в двоичной системе выглядит как 0101.
int i = 5; // переменная целого типа содержащая в себе значение 5 или 101b.
теперь, если сделать i << 1; то результат этой операции будет сдвиг влево числа на 1 байт и будет выглядеть как:
1010b; или 10 в десятичной.

если же сдвинуть в другую сторону, то получится следующее: i >> 1; результат: 10b (т.е. первый бит "исчезает") и таким образом мы получаем результат в десятичной системе равный 2.

Так же из битовых операций есть операторы:
& - логическое "И"
| - логическое "или"
~ - инверсия (т.е. если у вас есть набор бит: 1010, то применив этот оператор вы получите 0101)
^ - вроде xor (тут не помню)

про то, как работают эти операторы, думаю рассказывать не стоит, если стоит - то почитайте булеву алгебру, т.к. в программирование вы тогда рановато подались
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2899 / 1435 / 395
Регистрация: 18.10.2014
Сообщений: 2,644
01.11.2016, 19:35     Ввести целое число A и посчитать, сколько единиц в числе с 5 бита по 10 бит, включая эти биты #5
Цитата Сообщение от Boy18 Посмотреть сообщение
Если нашли у меня ошибку укажите на нее
* Я не знаю, где (и зачем) вы выкопали некую функцию _itoa_s, но подозреваю, что эта функция переводит число в строковое представление. Строковое представление числа будет состоять из символов. Поэтому если вы там собраетесь искать бинарные единицы, то искать там надо именно символ '1', а не целочисленное значение 1, как у вас в коде.

* Отдельно не ясно, почему принимающший массив у вас имеет размер 31. Откуда взялось 31? Тип int обычно имеет ширину 32 бита. А если учесть, что строковое представление еще должно содержать дополнительный '\0', то буфер для такой строки нужен размера 33.

* В задаче сказано проверить биты от 5 до 10. Вы почему-то прверяете биты от 0 до 5.

* Число, перведенное в строку при помощи _itoa_s может быть и совсем коротким.
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1762 / 985 / 60
Регистрация: 29.03.2010
Сообщений: 2,979
01.11.2016, 19:40     Ввести целое число A и посчитать, сколько единиц в числе с 5 бита по 10 бит, включая эти биты #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
ну и код, так уж и быть... не благодарите (шучу, конечно - благодарите )
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int someNumber;
cin >> someNumber;
int result = 0;
 
 
for (int i = 5; i <= 10; ++i)
{
    if ((someNumber >> i) & 1 == 1)
    {
        ++result; 
    }
}
 
cout << result;
Добавлено через 4 минуты
Цитата Сообщение от Maxim Prishchepa Посмотреть сообщение
~ - инверсия (т.е. если у вас есть набор бит: 1010, то применив этот оператор вы получите 0101)
* при условии, что мы применили его к 4-х разрядному числу, если разрадов больше, то все нули впереди станут единицами)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2016, 20:14     Ввести целое число A и посчитать, сколько единиц в числе с 5 бита по 10 бит, включая эти биты
Еще ссылки по теме:

Найти число десятков и единиц в двузначном числе C++
Побитовые операции. Получить целое число, отбросив нечётные биты данного числа k C++
C++ Ввести число в битовой форме: 8 бит, старшие биты слева, младшие – справа

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

Или воспользуйтесь поиском по форуму:
Boy18
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 8
01.11.2016, 20:14  [ТС]     Ввести целое число A и посчитать, сколько единиц в числе с 5 бита по 10 бит, включая эти биты #7
Все я разобрался, все работает, только что зарегался на форуме и столько ответов.
Спасибо всем большое, очень благодарен .
Yandex
Объявления
01.11.2016, 20:14     Ввести целое число A и посчитать, сколько единиц в числе с 5 бита по 10 бит, включая эти биты
Ответ Создать тему

Метки
программирование, с++
Опции темы

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