Programs
Вариант 0
Главная
Код данной программы предназначен только для VS. В Dev-C она будет работать некорректно из-за затирания переменных.
Здесь ошибка
Код:
#include "stdafx.h" #include #include #include void unpack() { unsigned char o, a, r, d; unsigned int UnitStateWord; printf_s(" Введите 16-ричное число от 0 до FFFF "); scanf_s("%x", &UnitStateWord); o = (UnitStateWord >> 15) & 0x1; a = (UnitStateWord >> 13) & 0x3; r = (UnitStateWord >> 10) & 0x7; d = UnitStateWord & 0xFF; printf_s(" Тип операции = %d\n", o); printf_s(" Код области диска = %d\n", a); printf_s(" Возможные реакции на ошибку = %d\n", r); printf_s(" Номер диска = %d\n", d); } void pack() { unsigned char o, a, r, d; unsigned int UnitStateWord = 0x100; printf_s("Введите тип операции (0-1) >"); scanf_s("%hhd", &o); UnitStateWord |= (o & 0x1) << 15; printf_s("\n Результат = %04x\n", UnitStateWord); printf_s("Введите код области диска (0 - 3) >"); scanf_s("%hhd", &a); UnitStateWord |= (a & 0x3) << 13; printf_s("\n Результат = %04x\n", UnitStateWord); printf_s(" Введите возможные реакции на ошибку (0 - 7) >"); scanf_s("%hhd", &r); UnitStateWord |= (r & 0x7) << 10; printf_s("\n Результат = %04x\n", UnitStateWord); printf_s(" Введите номер диска (0-255) >"); scanf_s("%hhd", &d); UnitStateWord |= d & 0xFF; printf_s("\n Результат= %04x\n", UnitStateWord); } int main() { setlocale(LC_ALL, "RUSSIAN"); pack(); unpack(); system("pause"); return 0; }