0 / 0 / 1
Регистрация: 27.07.2013
Сообщений: 34
1

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

27.07.2013, 16:01. Показов 1411. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здраствуйте, помогите, пожалуйста!

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

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

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

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

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

Буду очень признателен за помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.07.2013, 16:01
Ответы с готовыми решениями:

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

Битовые последовательности и битовые операции
Вычислить сумму по модулю 2 всех бит в позициях, номер которых кратен 2^k. (1, 2, 4, 8, 16, 32). ...

Используя только битовые операции и операции арифметического сложения и вычитания, вычислите число
Даны числа x и y. Используя только битовые операции и операции арифметического сложения и...

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

6
Эксперт С++
4267 / 2241 / 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
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
Эксперт С++
4267 / 2241 / 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
0 / 0 / 1
Регистрация: 27.07.2013
Сообщений: 34
27.07.2013, 19:18  [ТС] 5
Фантасмагорическое спасибо!)
0
Эксперт С++
4267 / 2241 / 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
0 / 0 / 0
Регистрация: 03.07.2020
Сообщений: 7
14.01.2021, 20:07 7
Цитата Сообщение от Kaskera Посмотреть сообщение
Фантасмагорическое спасибо
Большое спасибо)
У меня тесте такие же вопросы были, выручили
0
14.01.2021, 20:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2021, 20:07
Помогаю со студенческими работами здесь

Битовые операции
Здравствуйте, необходимо разбить двухбайтное целое число на тетрады и поменять местами 2 и 3...

Битовые операции
Всем привет! Помогите решить интересную задачу! Нужно ниже указный код переписать без условных...

битовые операции
при zt=13653, yt=0, xt=9949 for (k = 0; k&lt;16; ++k) { d = zt &gt;&gt;...

Битовые операции
Здравствуйте! нужно решить задачу: в целом числе заменить младший бит старшего байта на 1 ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru