You can only read whole bytes from a file.
So it depends how the bits are laid-out. Looks like you have a 16-bit number so it could be stored as 2 bytes.
If you are using the haxe.io.Input api, it might look like this:
// Assume little-endian - low first...
var low = input.readByte();
var high = input.readByte();
The it might be:
var bool0 = ( high & 0x80 ) > 0;
var bool1 = ( high & 0x40 ) > 0;
var miniInt = ( high & 0x30 ) >> 4;
var int12 = ((high & 0x0f) << 8 ) | low;
But it really depends on how the bits are on the file.