问题描述
仅当设置了所有低 7 位而不引入分支时,我才尝试设置字节值中的最高位。
例如,给定以下输入:
input: 0b_0010_1100 -> return same value
input: 0b_0101_0101 -> return same value
input: 0b_0111_1111 -> all bits set except MSB,return 0xff
input: 0b_1010_1100 -> MSB is already set,return same value
这只需要适用于 8 位大小的值。
我尝试使用 popcount
进行了几次尝试,但对所有输入都不起作用。
解决方法
怎么样:
return x | ((x+1) & 0x80);