The requirement is like following:
/* length must be >= 18 */
int calcActualLength(int length) {
int remainder = (length - 18) % 8;
if (remainder == 0)
return length;
return length + 8 - remainder;
}
using bit-wise operator, I could refactor the 1st line
int remainder = (length - 2) & 7;
Can it be further optimized?
((length+5)&~7)+2And
HELPER_calcActualLength()equals toROUNDUP_8()in the semantics when the argument >= 0And more simpler ROUNDUP_8() can be: