Programs
Вариант 8
Главная
Код данной программы предназначен только для VS. В Dev-C она будет работать некорректно из-за затирания переменных.
Здесь ошибка
Код:
#include "stdafx.h" #include #include #include void unpack() { unsigned char u, r, w, x; unsigned int e, UnitStateWord= 0; printf_s(" Введите 16-ричное число от 0 до FFFF "); scanf_s("%x", &UnitStateWord); u = (UnitStateWord >> 11) & 0x1F; r = (UnitStateWord >> 10) & 0x1; w = (UnitStateWord >> 9) & 0x1; e = (UnitStateWord >> 0) & 0x1FF; printf_s(" Код операции = %d\n", u); printf_s(" Признак цепочки команд = %d\n", r); printf_s(" Признак цепочки данных = %d\n", w); printf_s(" Количество байтов для передачи = %d\n", e); } void pack() { unsigned char o,c,d; unsigned int n, UnitStateWord = 0xD000; printf_s("Код операции (0-31) >"); scanf_s("%hhd", &o); UnitStateWord |= (o & 0x1F)<<11; printf_s("\n Результат = %04x\n", UnitStateWord); printf_s("Признак цепочки команд (0 - 1) >"); scanf_s("%hhd", &c); UnitStateWord |= (c & 0x1) << 10; printf_s("\n Результат = %04x\n", UnitStateWord); printf_s("Признак цепочки данных (0 - 1) >"); scanf_s("%hhd", &d); UnitStateWord |= (d & 0x1) << 9; printf_s("\n Результат = %04x\n", UnitStateWord); printf_s("Количество байтов для передачи(0 - 511) >"); scanf_s("%d", &n); UnitStateWord |= n & 0x1FF; printf_s("\n Результат= %04x\n", UnitStateWord); } int main() { setlocale(LC_ALL, "RUSSIAN"); pack(); unpack(); system("pause"); return 0; }