Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 41
1

Побитовые операции. Получить целое число, отбросив нечётные биты данного числа k

05.06.2015, 12:48. Показов 1586. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Кликните здесь для просмотра всего текста
Разработать алгоритм и составить программы на языке Си для решения задачи. Bo всех случаях, где возможно, использовать побитовые операции.

Задание:
Дано длинное целое неотрицательное число k. Получить целое число, отбросив нечетные биты данного числа k.

Есть заготовка, но не уверен что она правильная...
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
#include <stdio.h>
#include <conio.h>
void printBits(unsigned int m)
{
    unsigned int i;
    unsigned int mask = 1 << 16;
    printf("\n\t%10u=", m);
    for (i = 2; i <= 32; ++i)
    {
        printf("%c", m & mask ? '1' : '0');
        m <<= 1; //m=m<<1;
        if (i % 8 == 0)
            putchar(' ');
 
    }
}
int main()
{
    int k = 0, result = 0, i = 0;
    printf("Enter k =");
    scanf_s("%d", &k);
    printBits(k);
    for (i = 0; i < 16; ++i)
        result = result | ((k >> (2 * i + 1)) & 1) << i;
    printBits(result);
    printf("\n result=%d\n", result);
    _getch();
    result = 0;
}
Пуду премного благодарен за помощь!)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2015, 12:48
Ответы с готовыми решениями:

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

Для данного числа m найти наименьшее положительное целое число с суммой цифр m и которое делится m
Для данного числа m найти наименьшие положительное целое число с суммой цифр m, которое делится m....

Дано целое число N (> 0). Найти квадрат данного числа, используя для его вычисления следующую формулу
Помогите пожалуйста, как решить это всё, как расписать, я новичок в С++, как это всё делается? Вот...

Побитовые операции: получить целое число, отбросив нечетные биты данного числа k
Дано длинное целое неотрицательное число k. Получить целое число, отбросив нечетные биты данного...

4
1 / 1 / 0
Регистрация: 27.06.2012
Сообщений: 19
05.06.2015, 13:05 2
Предлагаю такой вариант
C++ (Qt)
1
2
unsigned int k = 10000;
k = k & 0xAAAAAAAA;
0
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 41
05.06.2015, 13:12  [ТС] 3
Я немного не понял к чему это. можно немного по подробнее)
0
1 / 1 / 0
Регистрация: 27.06.2012
Сообщений: 19
05.06.2015, 13:25 4
Мы просто зделали побитовые И для всех парных битов в int.
Допустим у нас в k = 3, битовое представление будет 0011, если мы зделаем k & 0xA(битовый эквивалент 1010), то получиться что новое значение будет состоят из значений парных битов, так как побитовое И дает результат 1 при 1 & 1.
Вот и получаеться что в решение которое я навел сверху мы любое число проводим побитовое И с 0xAAAAAAAA(битовый эквивалент 1010_1010_1010_1010_1010_1010_1010_1010), новое значение которое мы одержим будет состоять только из значений парных битов.

Добавлено через 3 минуты
Можешь попробывать провести такие манипуляции на обычном калькуляторе windows(в режиме для программистов), там наглядно увидишь как изменяться биты
1
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 41
05.06.2015, 13:26  [ТС] 5
Спасибо, понял.
сейчас попробую
0
05.06.2015, 13:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2015, 13:26
Помогаю со студенческими работами здесь

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

Дано целое двухзначное число a. Получить наибольшее число, которое можно получить из цифр числа a
Дано целое двухзначное число a. Получить наибольшее число, которое можно получить из цифр числа a....

Дано целое двухзначное число a. Получить удвоенное значение наименьшего числа, которое можно получить из цифр заданного числа a
Дано целое двухзначное число a. Получить удвоенное значение наименьшего числа, которое можно...

Дано целое число N (> 0). Найти квадрат данного числа
Дано целое число N (&gt; 0). Найти квадрат данного числа, используя для его вычисления следующую...


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

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