Programs
Вариант 4
Главная
Код данной программы предназначен только для VS. В Dev-C она будет работать некорректно из-за затирания переменных.
Здесь ошибка
Код:
#include #include "stdafx.h" #include void pack() { char d = 0; char r = 0; char a = 0; unsigned int UnitStateWord = 0xe200; printf_s("Введите направление передачи(0 - 1) >"); scanf_s("%hhd", &d); printf_s("Введите значение первого операнда - регистр (0 - 15) >"); scanf_s("%hhd", &r); printf_s("Введите регистр адреса 2-го операнда (0-15) >"); scanf_s("%hhd", &a); UnitStateWord |= (d & 1) << 8; UnitStateWord |= (r & 0xF) << 4; UnitStateWord |= (a & 0xF); printf_s("\nСлово состояния устройства = %04x\n", UnitStateWord); } void unpack() { char d = 0; char r = 0; char a = 0; unsigned int UnitStateWord = 0; printf_s("Введите cлово состояния устройства \n"); printf_s("(16-ричное число от 0 до 0xFFFF) >"); scanf_s("%x", &UnitStateWord); d = (UnitStateWord >> 8) & 1; r = (UnitStateWord >> 4) & 0xF; a = (UnitStateWord) & 0xF; putchar('\n'); printf_s("направление передачи = %d\n", d); printf_s("Введите значение первого операнда - регистр = %d\n", r); printf_s("Введите регистр адреса 2-го операнда = %d\n", a); } int main() { setlocale(LC_ALL, "Russian"); pack(); unpack(); }