本文主要是介绍【位操作笔记】判断两个整数的符号位是否相反,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
判断两个整数的符号位是否相反
判断两个整数的符号位是否相反,也就是两个数是否一个是正数,一个是负数。
算法说明
该算法通过异或的结果大小来判断两个整数的符号位是否相反。
实现代码
bool Detect_opposite_signs(int x, int y)
{return ((x ^ y) < 0);
}
算法计算过程
第一步,x ^ y,两个整数先进行异或。
第二步,判断异或的结果是否小于0,如果两个整数的符号位相反,那么异或的结果就会让最高位的符号位为1,也就是异或得到的数会小于0,反之大于等于0则表示两个正数符号位相同。
计算示例
假设x = 10 , y = 5
x ^ y = 10 ^ 5 = 0xA ^ 0x5 = 0
结果等于0,表示符号位相同。
假设x = 10 , y = -5
x ^ y = 10 ^ -5 = 0xA ^ 0xFFFFFFFB = 0xFFFFFFF1 < 00000 0000 0000 0000 0000 0000 0000 1010
^ 1111 1111 1111 1111 1111 1111 1111 1011
-------------------------------------------1111 1111 1111 1111 1111 1111 1111 0001
结果小于0,表示符号位相反。
[参考资料]
Bit Twiddling Hacks By Sean Eron Anderson
本文链接:https://blog.csdn.net/u012028275/article/details/113280013
这篇关于【位操作笔记】判断两个整数的符号位是否相反的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!