Programs
Вариант 5
Главная
Код данной программы предназначен только для VS. В Dev-C она будет работать некорректно из-за затирания переменных.
Здесь ошибка
Код:
#include "stdafx.h" #include #include #include void unpack() { unsigned char t = 0, d = 0; unsigned int n = 0, UnitStateWord = 0; printf_s(" Введите 16-ричное число от 0 до FFFF "); scanf_s("%x", &UnitStateWord); t = (UnitStateWord >> 10) & 0x3; d = (UnitStateWord >> 9) & 0x1; n = UnitStateWord & 0x1FF; printf_s(" Тип сдвига = %d\n", t); printf_s(" Направление = %d\n", d); printf_s(" Количество разрядов сдвига = %d\n", n); } void pack() { unsigned char t, d; unsigned int n = 0, UnitStateWord = 0xD000; printf_s("Введите тип сдвина (0-3) >"); scanf_s("%hhd", &t); UnitStateWord |= (t & 0x3) << 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; }