AKever

导航

abs()绝对值的位运算

绝对值的位运算

计算机语言中,正数的二进制首位(即符号位)为0,负数的二进制首位为1。
32位系统下,4字节数,求绝对值表达式:

abs(x) = (x >> 31) ^ x - (x >> 31)

代码中一般用宏实现:

#define ABS(x) (((x) >> 31) ^ (x)) - ((x) >> 31)

注:" >> "与" ^ "为位运算符," >> " 右移," ^ " 异或。

posted on 2015-06-23 15:45  AKever  阅读(850)  评论(0)    收藏  举报