Помогите исправить программу
Данные о квартире
Должно быть:
- этаж – 4 бита
- подъезд – 3 бита
- номер квартиры – 9 бит
Сейчас
- этаж – 6 бита
- подъезд – 3 бита
- номер квартиры – 7 бит
using namespace std;
unsigned short u_floor(unsigned short zap)
{
unsigned short tmp = zap;
tmp >>= 10;
return tmp;
}
unsigned short u_porch(unsigned short zap)
{
unsigned short tmp = zap;
tmp <<= 6;
tmp >>= 13;
return tmp;
}
unsigned short u_number(unsigned short zap)
{
unsigned short tmp = zap;
tmp <<= 9;
tmp >>= 9;
return tmp;
}
int main()
{
setlocale(LC_ALL, "ru");
unsigned short pac = 0;
unsigned short floor;
unsigned short porch;
unsigned short number;
unsigned short zap;
int state = 0;
while (state != 3)
{
system("cls");
cout << "Выберите действие:" << endl;
cout << "1.Запаковать даныые\n" << "2.Распаковать даныые\n" << "3.Выйти" << endl;
cin >> state;
switch (state)
{
case 1:
cout << "(009)Введите этаж: ";
cin >> floor;
cout << "(005)Введите подъезд: ";
cin >> porch;
cout << "(127)Введите номер квартиры: ";
cin >> number;
pac |= floor;
pac <<= 3;
pac |= porch;
pac <<= 7;
pac |= number;
cout << "\nЗапакованное значение: " << pac << "\n";
system("pause");
break;
case 2:
cout << "Введите запакованное значение: ";
cin >> zap;
cout << "\nЭтаж :" << u_floor(zap) << endl;
cout << "Подъезд: " << u_porch(zap) << endl;
cout << "Номер квартиры: " << u_number(zap) << "\n";
system("pause");
break;
case 3:
system("pause");
break;
}
}
return 0;
}```