Помогите исправить программу

Данные о квартире
Должно быть:

  • этаж – 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;
   }```

Ответы (0 шт):