Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Boy18
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 13
1

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

01.11.2016, 19:21. Просмотров 1452. Ответов 6

УСЛОВИЕ --- Ввести целое число 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;
}
Если честно плохо понимаю битовые операции, но есть огромное желание научиться! Если нашли у меня ошибку укажите на нее и если можно с пояснением, если же хотите предложить свое решение то тоже пожалуйста с объяснением!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2016, 19:21
Ответы с готовыми решениями:

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

Ввести число в битовой форме: 8 бит, старшие биты слева, младшие – справа
Код работает, но что-то неправильно считает. Не могу понять почему. Подскажите плз. /*Дано число...

С клавиатуры вводится целое двухзначное число Х. Определить сколько десятков и единиц в Х
С клавиатуры вводится целое двухзначное число Х. Определить сколько десятков и единиц в Х.

Посчитать сколько двоичных единиц содержит каждое число
Дан цифровой массив , посчитать сколько двоичных единиц содержит каждое число

Дано масив из 6 байт. Рассматривая его, как масив с 48 бит, посчитать число 2х единиц, что расположены между нулями.
Ребят, помогите пожалуйста! не получается... Дано массив из 6 байт. Рассматривая его, как массив...

6
shilko2013
250 / 227 / 185
Регистрация: 02.04.2016
Сообщений: 894
Завершенные тесты: 2
01.11.2016, 19:23 2
Вводишь число, потом создаешь bitset из него и считаешь биты
1
nmcf
6528 / 5752 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
01.11.2016, 19:26 3
Где здесь битовые операции?
C++
1
2
char k[33];
_itoa_s(value, k, 33, 2);
В цикле на длину строки ориентироваться, а не на 31.
1
Maxim Prishchepa
Эксперт С++
1927 / 1039 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
01.11.2016, 19:33 4
ошибку искать лень, раз хотите научиться - давайте учиться...

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

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

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

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

про то, как работают эти операторы, думаю рассказывать не стоит, если стоит - то почитайте булеву алгебру, т.к. в программирование вы тогда рановато подались
2
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
5083 / 2551 / 703
Регистрация: 18.10.2014
Сообщений: 4,429
01.11.2016, 19:35 5
Цитата Сообщение от Boy18 Посмотреть сообщение
Если нашли у меня ошибку укажите на нее
* Я не знаю, где (и зачем) вы выкопали некую функцию _itoa_s, но подозреваю, что эта функция переводит число в строковое представление. Строковое представление числа будет состоять из символов. Поэтому если вы там собраетесь искать бинарные единицы, то искать там надо именно символ '1', а не целочисленное значение 1, как у вас в коде.

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

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

* Число, перведенное в строку при помощи _itoa_s может быть и совсем коротким.
1
Maxim Prishchepa
Эксперт С++
1927 / 1039 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
01.11.2016, 19:40 6
Лучший ответ Сообщение было отмечено Boy18 как решение

Решение

ну и код, так уж и быть... не благодарите (шучу, конечно - благодарите )
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-х разрядному числу, если разрадов больше, то все нули впереди станут единицами)
1
Boy18
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 13
01.11.2016, 20:14  [ТС] 7
Все я разобрался, все работает, только что зарегался на форуме и столько ответов.
Спасибо всем большое, очень благодарен .
0
01.11.2016, 20:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2016, 20:14

Посчитать сколько двоичных единиц содержит каждое число массива.
Всем доброго дня! Вообщем дали на практике задание: Дан цифровой массив, посчитать сколько двоичных...

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

Дан цифровой массив , посчитать сколько двоичных единиц содержит каждое число
Добрый день . Задание таково: дан цифровой массив , посчитать сколько двоичных единиц содержит...


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

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

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