美文网首页
用位运算求一个数的绝对值

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

作者: 有一束阳光叫温暖 | 来源:发表于2017-10-19 16:32 被阅读0次

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

-n=~(-n)+1;

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

int y = n>>31;

n = (n^y)-y

相关文章

网友评论

      本文标题:用位运算求一个数的绝对值

      本文链接:https://www.haomeiwen.com/subject/nsxpuxtx.html