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