Programs
Вариант 6
Главная
Код данной программы предназначен только для VS. В Dev-C она будет работать некорректно из-за затирания переменных.
Здесь ошибка
Код:
#include "stdafx.h" #include #include #include void unpack() { unsigned char g, s, p; unsigned int e, UnitStateWord= 0; printf_s(" Введите 16-ричное число от 0 до FFFF "); scanf_s("%x", &UnitStateWord); g = (UnitStateWord >> 8) & 0xFF; s = (UnitStateWord >> 4) & 0xF; p = (UnitStateWord >> 3) & 0x1; printf_s(" Идентификатор группы = %d\n", g); printf_s(" Код системы = %d\n", s); printf_s(" Признак привилегированного пользователя = %d\n", p); } void pack() { unsigned char g,s,p; unsigned int n, UnitStateWord = 0xD000; printf_s("Идентификатор группы (0-255) >"); scanf_s("%hhd", &p); UnitStateWord |= (p & 0xFF)<<8; printf_s("\n Результат = %04x\n", UnitStateWord); printf_s("Код системы (0 - 15) >"); scanf_s("%hhd", &s); UnitStateWord |= (s & 0xF) << 4; printf_s("\n Результат = %04x\n", UnitStateWord); printf_s("Признак привилегированного пользователя (0 - 1) >"); scanf_s("%hhd", &g); UnitStateWord |= (g & 0x1) << 3; printf_s("\n Результат = %04x\n", UnitStateWord); } int main() { setlocale(LC_ALL, "RUSSIAN"); pack(); unpack(); system("pause"); return 0; }