Как уложить 2 цифры по 4 бита в 1 байт?
Для этого существуют битовые операции. 
Сдвиг <<, >>
Логическиe И и ИЛИ &, |packed = ((x& 0xf) << 4) | (y & 0xf) - это упаковка
y = packed & 0xf
x = (packed >> 4) & 0xf
0xf - это двоичное 1111
Если вы хотите хранить X в четырех старших битах и Y в четырех младших, для получения "упакованного" формата вам нужно всего-навсего умножить X на десятичное число шестнадцать (двоичное 10000), а потом прибавить Y. Для обратной операции можно, например, упакованное число поделить на десятичное шестнадцать целочисленно (отбросив дробную часть) - получите X, а путем вычитания из упакованного числа X*16, получите Y. 
Но это неоптимальные варианты, естественно.
И что это за такие странные целые координаты от нуля до пятнадцати?