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

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

Войти
Регистрация
Восстановить пароль
 
Sasha 93
2 / 2 / 0
Регистрация: 28.11.2012
Сообщений: 39
#1

Битовые операции - C++

29.09.2013, 23:31. Просмотров 737. Ответов 0
Метки нет (Все метки)

Составить две программы, первая из которых вводит составные части структуры данных, и формирует из них заданную упакованную структуру. Вторая программа вводит упакованную структуру как 16-ричной число и выводит значения отдельных ее составных частей.
Слово состояния канала в вычислительной системе представляется в виде:
розряду 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
Значення N N N N E C C C C C C C C C 0 P


де:
N..N - Номер канала
E - Признак ошибки
C..C - код причини преривания
P - признак завершения программы в канале




Вот у меня есть пример похожей задачи, но я не могу его подогнать к своему.=(

Слово состояния устройства в системе ввода-вывода представляется в виде:
разряда 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
Значение C C C C C 0 F B N N N N N N N N
*
где
C.. C - код состояния
F - признак ошибки (1/0)
B - признак занятости (0/1)
N.. N - количество байт, переданных в последний операции

Программа ввода:
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
#include <stdio.h>
int main(void) {
 char c; /* код состояния */
 char f; /* признак ошибки */
 char b; /* признак занятости */
 unsigned char n; /* количество байт */
 unsigned int UnitStateWord; /* слово состояния */
  /* ввод составных частей */
  printf("Введите код состояния (0 - 31) >");
  scanf("%d",&c);
  printf("Введите признак ошибки (0 / 1) >");
  scanf("%d",&f);
  printf("Введите признак занятости (0 / 1) >");
  scanf("%d",&b);
  printf("Введите количество переданных байт (0 - 255) >");
  scanf("%d",&n);
  /* формирование упакованного кода */
  UnitStateWord=((unsigned int)c&0x1F)<<11;
  UnitStateWord|=((unsigned int)f&1)<<9;
  UnitStateWord|=((unsigned int)b&1)<<8;
  UnitStateWord|=n&0xFF;
  /* вывод результата */
  printf("\nСлово состояния устройства = %04x\n",
     UnitStateWord);
  return 0;
}
Программа вывода:
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
#include <stdio.h>
int main(void) {
 char c; /* код состояния */
 char f; /* признак ошибки */
 char b; /* признак занятости */
 unsigned char n; /* количество байт */
 unsigned int UnitStateWord; /* слово состояния */
  /* ввод слова состояния устройства */
  printf("Введите cлово состояния устройства \n");
  printf("(16-ричное число от 0 до 0xFFFF) >");
  scanf("%x",&UnitStateWord);
  /* Выделение составных частей */
  c=(UnitStateWord>>11)&0x1F;
  f=(UnitStateWord>>9)&1;
  b=(UnitStateWord>>8)&1;
  n=UnitStateWord&0xFF;
  /* вывод результатов */
  putchar('\n');
  printf("Код состояния                  = %d\n",c);
  printf("Признак ошибки             = %d\n",f);
  printf("Признак занятости          = %d\n",b);
  printf("Количество переданных байт = %d\n",n);
  return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2013, 23:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Битовые операции (C++):

Битовые операции, битовые поля. - C++
Здравствуйте! Еслть 4 диапазона чисел: 0-100, 0-100, 0-6000, 0-3. Сделать в виде битовых операций. Записать в unsigned int. Использовать...

Битовые операции и операции смещения языка С - C++
Доброго времени суток господа,помогите пожалуйста.Есть 2 кода к задаче,первый работает верно(переводит обычные числа в 16-ти ричные),а...

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

Битовые операции - C++
Не могу разобраться с 4 заданием Реализовал пятое но не в одну строчку и без понятия как сделать в одну П.5.18.Правил Запрещено...

битовые операции - C++
надо написать ф-цию, которая в данном числе(в двоичной с.с.) на заданном номере ставила 1, вместо 0

Битовые операции - C++
Имеется число int x = 85; // 1010101 - двоичное представление // 6543210 - номера битов // нужно взять // 0,2,3,4 биты и сложить...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2013, 23:31
Привет! Вот еще темы с ответами:

Битовые операции - C++
Ребят, нужен алгоритм, а желательно и код для реализации следующей функции: Есть скажем числа от 0 до 7, т.е. 8 (2^3) Теперь...

Битовые операции - C++
Ребят, помогите кто чем может. Дана строка unsigned char. Необходимо через каждых 4 бита вставить 1, при этом ничего не затерев. ...

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

Битовые операции - C++
Здравствуйте! нужно решить задачу: в целом числе заменить младший бит старшего байта на 1 решается ли это битовыми сдвигами? и...


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

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

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