用位运算求一个数的绝对值

2017-10-19  本文已影响0人  有一束阳光叫温暖

在计算机内,数据都是以二进制形式的补码存储和运算,正数的补码为它的原码,而负数的补码=反码+1,对于负数的反码,是除了符号为不变,其他都取反,可以发现把负数补码取反加1,此时就把符号位给去掉了,其他不变,也它的绝对值。公式如下:

-n=~(-n)+1;

我们可以知道当一个正数^0(^位异或:相同为0,不同为1)等于它本身,而一个负数^-1,为,等于取反。经上面分析,求一个整数n绝对值为

int y = n>>31;

n = (n^y)-y

上一篇 下一篇

猜你喜欢

热点阅读