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

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

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

Кликните здесь для просмотра всего текста
Разработать алгоритм и составить программы на языке Си для решения задачи. 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2015, 12:48
Ответы с готовыми решениями:

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

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

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

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

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

4
NoodLez
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
NoodLez
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2015, 13:26

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

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

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


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

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

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