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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.74
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 120
#1

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

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

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

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

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

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

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

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

Напишите программу, которая позволяет пользователю ввести число, а затем генерирует таблицу размером 20 строк на 10 столбцов - C++
вот задача Решения к упражнениям, помеченным знаком *, можно найти в приложении Ж. *1. Предположим, вы хотите создать таблицу...

Как записать шестнадцатеричное число в переменную типа string? - C++
Есть ф-ция, которая переводит целочисленный переменные или просто цифры в шестнадцатеричный вид. Например этот кусок кода выведет в консоль...

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

2
stanis-morozov
15 / 15 / 1
Регистрация: 18.03.2012
Сообщений: 91
08.04.2012, 16:25 #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);
1
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 120
08.04.2012, 21:15  [ТС] #3
спасибо большое более подробного ответа неожидала) сейчас буду разбираться!

Добавлено через 4 часа 16 минут
возник вопрос, а как переключяются и выключаются биты не изменяя остальных? какие для этого используются команды, желательно с примерами кода с++. заранее благодарю.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2012, 21:15
Привет! Вот еще темы с ответами:

Напишите программу, которая позволяет ввести строку символов - C++
Напишите программу, которая позволяет ввести строку символов, и вывести ее в обратном порядке, заменяя одиночные пробелы двойными.

Написать программу, которая предлагает пользователю ввести число и выводит в консоль его факториал - C++
Написать программу, которая предлагает пользователю ввести число и выводит в консоль его факториал. использовать только for .

Составить программу которая определяет, является ли введенное число n с клавиатуры - простым - C++
Помогите написать программу с оператором for

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


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

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

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