Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/30: Рейтинг темы: голосов - 30, средняя оценка - 4.70
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 120
1

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

08.04.2012, 13:58. Показов 5548. Ответов 2
Метки нет (Все метки)

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

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

Помогите пожалуйста разобраться с этими масками.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2012, 13:58
Ответы с готовыми решениями:

Напишите программу, которая позволяет ввести с клавиатуры целое число n, и выводит на экран структуру из чередующихся 0
Собственно по теме,помогите пожалуйста с данной программой,и желательно с небольшими пояснениями....

Написать программу которая преобразует введенное с клавиатуры трехразрядное шестнадцатеричное число в десятичное
Помогите пожалуйста с программой!Язык С++! "Написать программу которая преобразует введенное с...

Написать программу, которая преобразует введенное с клавиатуры двухразрядное шестнадцатеричное число в десятичное
Помогите пожалуйста решить три задачки на С++. Заранее сильно благодарен! Написать программу,...

Создать программу, которая позволяет ввести целое число n и вывести это число в виде произведения простых чисел
Здравствуйте. Не могли бы знающие люди помочь новичку с с++. суть проблемы вот: Создать...

2
15 / 15 / 3
Регистрация: 18.03.2012
Сообщений: 91
08.04.2012, 16:25 2
Лучший ответ Сообщение было отмечено melanu как решение

Решение

Ну во-первых считывание шестнадцатеричного числа. Функции 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);
1
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 120
08.04.2012, 21:15  [ТС] 3
спасибо большое более подробного ответа неожидала) сейчас буду разбираться!

Добавлено через 4 часа 16 минут
возник вопрос, а как переключяются и выключаются биты не изменяя остальных? какие для этого используются команды, желательно с примерами кода с++. заранее благодарю.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2012, 21:15

Написать программу, которая позволяет ввести номер года и печатает его название по старояпонскому календарю
В старояпонском календаре был принят двенадцатилетний цикл. Годы внутри цикла носили названия...

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


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

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

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