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

Битовые операции

27.07.2013, 16:01. Просмотров 908. Ответов 5
Метки нет (Все метки)

Здраствуйте, помогите, пожалуйста!

Надо написать три функции, используя только битовые (для первых двух) и только битовые и арифметические операции (для третей), которые:

1) Функция, которая возвращает 1, если значения битов в двух заданых позициях беззнакового длинного целого числа совпадают.

2) Функция, которая меняет местами соседние группы из 16 битов в заданом беззнаковом длинном целом числе.

3) Функция, которая возвращает следующее четное число по заданому беззнаковому длинному целому числу.

Разработать три заданых функции в одной программе. В основной программе (функции main) ввести данные с клавиатуры, вызвать функции и вывести результат на экран. Для каждого десятичного числа из входных данных и результатов вывести его двоичный код. При разработке функций условные операторы, выражения ?: и операторы цыкла или рекурсию НЕ ИСПОЛЬЗОВАТЬ.

Буду очень признателен за помощь.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2013, 16:01
Ответы с готовыми решениями:

Битовые операции, битовые поля.
Здравствуйте! Еслть 4 диапазона чисел: 0-100, 0-100, 0-6000, 0-3. Сделать в виде битовых операций....

Битовые операции и операции смещения языка С
Доброго времени суток господа,помогите пожалуйста.Есть 2 кода к задаче,первый работает...

Битовые операции
Задание: Как я понимаю надо создать объект типа int, но как менять местами биты вообще не...

Битовые операции
Вот такая вот лаба на С, уже как не думал ну не могу решить я ее. Прошу помочь, прикрепил полное...

Битовые операции
Собсно,если используется 4 байтовая переменная,то почему она представлена 16 битами(1010 0110 0010...

5
Thinker
Эксперт С++
4234 / 2208 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
27.07.2013, 18:43 2
Цитата Сообщение от Kaskera Посмотреть сообщение
Буду очень признателен за помощь.

Не по теме:

давайте начнем с этого. Пойте всем дифирамбы


1
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int check(unsigned a, unsigned pos1, unsigned pos2)
{
    return ((a >> pos1) & 1 == (a >> pos2) & 1);
}
 
int main()
{
    std::cout << check(5, 0, 2);
    return 0;
}
1
Kaskera
0 / 0 / 1
Регистрация: 27.07.2013
Сообщений: 34
27.07.2013, 18:59  [ТС] 3
Дифирамбы уже на подходе

Спасибо большое!
Можете помочь с реализацией 2 и 3 функций?

У меня есть наброски, но я не знаю, как правильно все оформить.

2) ((n >> 16) & 0x0000ffff0000ffffL) | ((n << 16) & 0xffff0000ffff0000L)

3) (n & ~1L) + 2
0
Thinker
Эксперт С++
4234 / 2208 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
27.07.2013, 19:08 4
1 и 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
26
27
28
#include <iostream>
 
int check(unsigned long a, unsigned pos1, unsigned pos2)
{
    return (a >> pos1) & 1 == (a >> pos2) & 1;
}
 
unsigned long exchange(unsigned long a)
{
    return ((a & 0xFFFF) << 16) | ((a >> 16) & 0xFFFF);
}
 
void Print(unsigned long a, int n)
{
    for(int i = n - 1; i >= 0; --i)
        std::cout << ((a >> i) & 1);
    std::cout << std::endl;
}
 
int main()
{
    unsigned long a = 123, b; 
    std::cout << check(a, 5, 7) << std::endl;
    Print(a, sizeof(a) * 8);
    b = exchange(123);
    Print(b, sizeof(b) * 8);
    return 0;
}
Добавлено через 4 минуты
3.
C++
1
2
3
4
unsigned long next(unsigned long a)
{
    return a + (a & 1) + (((a + 1) & 1) << 1);
}
1
Kaskera
0 / 0 / 1
Регистрация: 27.07.2013
Сообщений: 34
27.07.2013, 19:18  [ТС] 5
Фантасмагорическое спасибо!)
0
Thinker
Эксперт С++
4234 / 2208 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
27.07.2013, 19:20 6
Цитата Сообщение от Kaskera Посмотреть сообщение
Фантасмагорическое спасибо!)
да бросьте, разберитесь лучше, это полезно весь код вместе:

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
#include <iostream>
 
int check(unsigned long a, unsigned pos1, unsigned pos2)
{
    return (a >> pos1) & 1 == (a >> pos2) & 1;
}
 
unsigned long exchange(unsigned long a)
{
    return ((a & 0xFFFF) << 16) | ((a >> 16) & 0xFFFF);
}
 
void Print(unsigned long a, int n)
{
    for(int i = n - 1; i >= 0; --i)
        std::cout << ((a >> i) & 1);
    std::cout << std::endl;
}
 
unsigned long next(unsigned long a)
{
    return a + (a & 1) + (((a + 1) & 1) << 1);
}
 
int main()
{
    unsigned long a = 124, b; 
    std::cout << check(a, 5, 7) << std::endl;
    Print(a, sizeof(a) * 8);
    b = exchange(123);
    Print(b, sizeof(b) * 8);
    std::cout << next(a) << std::endl;
    return 0;
}
1
27.07.2013, 19:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2013, 19:20

Битовые операции
Есть арифметическое выражение: y = 13 * ((2 * a + b / 8)). а, b вводятся пользователем. Как...

Битовые операции
Доброго времени суток! Помогите решить задачу на тему &quot;Битовые операции&quot;: Ввести четыре целых...

Битовые операции
#include&lt;iostream&gt; #include&lt;climits&gt; int main() { unsigned int a = UINT_MAX; unsigned short...


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

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

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