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

Составить программу, которая позволяет ввести с клавиатуры шестнадцатеричное число и записать его в переменную a, выполнить требуемую проверку. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.74
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 118
08.04.2012, 13:58     Составить программу, которая позволяет ввести с клавиатуры шестнадцатеричное число и записать его в переменную a, выполнить требуемую проверку. #1
Составить программу, которая позволяет ввести с клавиатуры шестнадцатеричное число и записать его в переменную a типа unsigned. Выполнить необходимые проверки для данного числа:

Проверить, установлен ли 11 или 15 бит в “1”.
Включить 1, 3, 5, 6, 8, 10, 11, 12 и 13 биты, не изменяя остальных, записав результат в переменную b.

Помогите пожалуйста разобраться с этими масками.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2012, 13:58     Составить программу, которая позволяет ввести с клавиатуры шестнадцатеричное число и записать его в переменную a, выполнить требуемую проверку.
Посмотрите здесь:

C++ Напишите программу, которая позволяет ввести строку символов
Написать программу, которая преобразует введенное с клавиатуры двухразрядное шестнадцатеричное число в десятичное C++
Написать программу, которая предлагает пользователю ввести число и выводит в консоль его факториал C++
Напишите программу, которая позволяет пользователю ввести число, а затем генерирует таблицу размером 20 строк на 10 столбцов C++
Создать программу, которая позволяет ввести целое число n и вывести это число в виде произведения простых чисел C++
Ввести с клавиатуры трехзначное число и определить, какая из его цифр больше. Составить блок-схему C++
Написать программу которая преобразует введенное с клавиатуры трехразрядное шестнадцатеричное число в десятичное C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stanis-morozov
15 / 15 / 1
Регистрация: 18.03.2012
Сообщений: 91
08.04.2012, 16:25     Составить программу, которая позволяет ввести с клавиатуры шестнадцатеричное число и записать его в переменную a, выполнить требуемую проверку. #2
Ну во-первых считывание шестнадцатеричного числа. Функции printf() и scanf() поддерживают ввод-вывод восьмеричных, десятеричных и шестнадцатеричных чисел. Для шестнадцатеричных чисел используется идентификатор %x. Тогда считать шестнадцатеричное число мы можем так:
C++
1
2
unsigned int a;
scanf("%x", &a);
Далее, проверка битов. Проверить n-ый бит можно, взяв число, в котором n-ый бит равен 1, а все остальные равны 0 и осуществить операцию & (И) с числом, бит которого мы хотим проверить.
То есть, например для 11 бита делаем так:
100000000002 = 102410
Тогда код будет следующий:
C++
1
2
3
4
5
6
7
8
9
unsigned int bit11 = 1024;
if (a & bit11)
{
    printf("Eleventh bit is 1\n");
}
else
{
    printf("Eleventh bit is 0\n");
}
Для 15-го бита аналогично 1000000000000002 = 1638410
C++
1
2
3
4
5
6
7
8
9
unsigned bit15 = 16384;
if (a & bit11)
{
    printf("Fifteenth bit is 1\n");
}
else
{
    printf("Fifteenth bit is 0\n");
}
и т.д.
если нам нужно проверить, установлен ли хотя бы один из битов (11 или 15) в 1, то будет писать:
C++
1
2
3
4
5
6
7
8
if ((a & bit11) | (a & bit15))
{
    printf("Eleventh or fiftennth bit is 1\n");
}
else
{
    printf("Eleventh and fifteenth bits are 0\n"); 
}
Ну а теперь установим в 1 биты номер 1, 3, 5, 6, 8, 10, 11, 12 и 13.
Для это нам нужно взять число в котором только эти биты установлены в 1 и произвести операцию |(ИЛИ).
11110101101012 = 786110
Тогда пишем
C++
1
2
3
unsigned int b, k = 7861;
b = a | k;
printf("%x\n", b);
Это если мы хотим вывести число в шестнадцатеричной форме.
Если в восьмеричной:
C++
1
printf("%o\n", b);
В десятичной:
C++
1
printf("%d\n", b);
В десятичной без знака:
C++
1
printf("%u\n", b);
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 118
08.04.2012, 21:15  [ТС]     Составить программу, которая позволяет ввести с клавиатуры шестнадцатеричное число и записать его в переменную a, выполнить требуемую проверку. #3
спасибо большое более подробного ответа неожидала) сейчас буду разбираться!

Добавлено через 4 часа 16 минут
возник вопрос, а как переключяются и выключаются биты не изменяя остальных? какие для этого используются команды, желательно с примерами кода с++. заранее благодарю.
Yandex
Объявления
08.04.2012, 21:15     Составить программу, которая позволяет ввести с клавиатуры шестнадцатеричное число и записать его в переменную a, выполнить требуемую проверку.
Ответ Создать тему
Опции темы

Текущее время: 01:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru