public float ReadSignedSingle(int numberOfBits) { uint encodedVal = ReadUInt32(numberOfBits); int maxVal = (1 << numberOfBits) - 1; return ((float)(encodedVal + 1) / (float)(maxVal + 1) - 0.5f) * 2.0f; }