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

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

Войти
Регистрация
Восстановить пароль
 
[Iluminate]
3 / 3 / 0
Регистрация: 28.11.2011
Сообщений: 34
#1

работа с побитовыми операциями. - C++

22.12.2011, 20:35. Просмотров 452. Ответов 7
Метки нет (Все метки)

помогите с задачкой..
Дан массив чисел. Определить сумму тех элементов массива, двоичные коды которых содержат единицу в битах 1 и 5. Определить количество разрядов, равных 0, в двоичном представлении суммы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2011, 20:35     работа с побитовыми операциями.
Посмотрите здесь:

Массивы. Работа с побитовыми операциями - C++
Помогите с программированием,пожалуйста!!!!!!!!!!!! Дан массив из беззнаковых чисел. Коды четных элементов массива сдвинуть на 2 разряда...

Помогите разобраться с побитовыми операциями - C++
А точнее как с помощью только побитовых операций и операции сложения проверить делиться ли число a (unsigned char a) на 3? Заранее...

помогите!! побитовыми операциями вычесть два числа - C++
вычесть из числа, введенного пользователем, число 3 используя ТОЛЬКО побитовые операции.помогите новечку)

Работа с битовыми операциями - C++
Дан массив целых чисел. Составить функцию unpack Char, которая принимает целую переменную типа unsigned и распаковывает из нее два символа....

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

Работа с битовыми операциями - C++
Реализовать функции шифрования и дешифрования строк. Принцип шифрования: на четыре бита слева каждого символа нало-жить 4-ёх битную маску...

Проблема с битовыми операциями - C++
Где-то баг...Вроде все правильно, но выводятся одни нули. Перепроверил уже раз 5. В чем ошибка? Вот задание: Составить прогу, которая...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
Заблокирован
22.12.2011, 20:56     работа с побитовыми операциями. #2
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
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
struct m{
    unsigned m5;
    unsigned m1;
} mask;
 
int main(void)
{
    size_t size = 1000000;
    int i = 0;
    double sum = 0.0;
    mask.m1 = 0x1;
    mask.m5 = 0x10;
 
    while ( i < size ){
        sum +=  ( ( i & mask.m1 ) && ( i & mask.m5 ) ) ? i : 0;
        ++i;
    }
    printf("sum = %e\n", sum);
 
    exit ( EXIT_SUCCESS );
}
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.12.2011, 21:11     работа с побитовыми операциями. #3
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
#include <iostream>
#include <vector>
#include <cstdlib>
#include <algorithm>
#include <numeric>
#include <iterator>
 
int main()
{
    srand(time(NULL));
    std::vector<int> v(10);
    std::generate(v.begin(), v.end(), [] { return rand() % 21; });
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    int sum = std::accumulate(v.begin(), v.end(), 0,
        [](int init, int num)
        {
            return (((num & 1) && (num & (1 << 4))) ? (init + num) : (init));
        } 
    );
    std::cout << sum << ' ';
    int count = 0;
    while(sum)
    {
        if(!(sum & 1))
            ++count;
        sum >>= 1;
    }
    std::cout << count << std::endl;
}
Без лямбда
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
#include <iostream>
#include <vector>
#include <cstdlib>
#include <algorithm>
#include <numeric>
#include <iterator>
 
template <class T> T gen() { return rand() % 21; }
 
template <class T> T func(T init, T num)
{   
    return (((num & 1) && (num & (1 << 4))) ? (init + num) : (init));
} 
 
int main()
{
    srand(time(NULL));
    std::vector<int> v(10);
    std::generate(v.begin(), v.end(), gen<int>);
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    int sum = std::accumulate(v.begin(), v.end(), 0, func<int>);
    std::cout << sum << ' ';
    int count = 0;
    while(sum)
    {
        if(!(sum & 1))
            ++count;
        sum >>= 1;
    }
    std::cout << count << std::endl;
}
[Iluminate]
3 / 3 / 0
Регистрация: 28.11.2011
Сообщений: 34
22.12.2011, 21:37  [ТС]     работа с побитовыми операциями. #4
спасибо.
[Iluminate]
3 / 3 / 0
Регистрация: 28.11.2011
Сообщений: 34
27.12.2011, 00:05  [ТС]     работа с побитовыми операциями. #5
ребят, а если мне надо выполнить определенные условия, ну скажем что - то типо такого:

1. При открытии или создании любых файлов необходимо проверять наличие ошибок ввода-вывода.
2. Результат выполнения задания должен быть представлен в на глаза-ней форме, например:
Результат объединения значений
65535 = 11111111 11111111
1 = 00000000 00000001 операцией поразрядное И (&) дори-внюе
1 = 00000000 0000000
alkagolik
Заблокирован
27.12.2011, 03:27     работа с побитовыми операциями. #6
Цитата Сообщение от Iluminate Посмотреть сообщение
1. При открытии или создании любых файлов необходимо проверять наличие ошибок ввода-вывода.
C
1
2
3
if ( ( fopen ( file, "rw" ) ) == NULL ){
    exeption;
}
Цитата Сообщение от Iluminate Посмотреть сообщение
Результат выполнения задания должен быть представлен в на глаза-ней форме
...
1 = 00000000 0000000
что за чушь?
zulkis
27.12.2011, 06:32
  #7

Не по теме:

Цитата Сообщение от [Iluminate] Посмотреть сообщение
1 = 00000000 00000001 операцией поразрядное И (&) дори-внюе
1 = 00000000 0000000
А что такое "дори-внюе"? У меня конечно есть предположение... Но может автор совсем не это имел ввиду.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2011, 18:27     работа с побитовыми операциями.
Еще ссылки по теме:

Класс матриц с арифметическими операциями С++ - C++
Я создаю класс матриц с операциями сложения, умножения, вычитания матриц, умножения на константу, транспонирования на С++. Почему-то не...

Стеки. Распарсить выражение с бинарными операциями - C++
Не понимаю,как реализовать данную задачу: Пусть дана без ошибок формула, имеющая следующий синтаксис: &lt;формула&gt;::=&lt;цифра&gt; |...

С операциями сдвига из 123456 получить 102030405060 - C++
Из целого числа получить новое путем вставки после каждой цифры 0 (231457 -&gt; 2030405070). Всё это с помощью опеаций сдвига и поразрядных...

Класс вектор с арифметическими операциями, перегруженные операторы - C++
Добрый день! Нужна помощь. Реализовываю класс вектор с арифметическими операторами с помощью контейнера &lt;vector&gt;. У меня имеются рабочие...

Описать класс, соответствующий матрицам, с операциями их сложения - C++
ПОМОГИТЕ ПОЖАЛУЙСТА!!! Задание: 1. Описать класс, соответствующий матрицам размерности 7 × 7, с операциями сложения матриц, умножения...


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

Или воспользуйтесь поиском по форуму:
[Iluminate]
3 / 3 / 0
Регистрация: 28.11.2011
Сообщений: 34
27.12.2011, 18:27  [ТС]     работа с побитовыми операциями. #8
дори-внюе, ошибочка..
равно

Добавлено через 15 минут
Результат выполнения задания должен быть представлен в такой форме форме...

Результат объединения значений
65535 = 11111111 11111111
1 = 00000000 00000001 операцией поразрядное И (&) равно
1 = 00000000 0000000
Yandex
Объявления
27.12.2011, 18:27     работа с побитовыми операциями.
Ответ Создать тему
Опции темы

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