abs()绝对值的位运算
绝对值的位运算
计算机语言中,正数的二进制首位(即符号位)为0,负数的二进制首位为1。
32位系统下,4字节数,求绝对值表达式:
abs(x) = (x >> 31) ^ x - (x >> 31)
代码中一般用宏实现:
#define ABS(x) (((x) >> 31) ^ (x)) - ((x) >> 31)
注:" >> "与" ^ "为位运算符," >> " 右移," ^ " 异或。
绝对值的位运算
计算机语言中,正数的二进制首位(即符号位)为0,负数的二进制首位为1。
32位系统下,4字节数,求绝对值表达式:
abs(x) = (x >> 31) ^ x - (x >> 31)
代码中一般用宏实现:
#define ABS(x) (((x) >> 31) ^ (x)) - ((x) >> 31)
注:" >> "与" ^ "为位运算符," >> " 右移," ^ " 异或。