判断两个数是否符号相反----位运算
发布日期:2021-10-03 20:32:36
浏览次数:21
分类:技术文章
本文共 601 字,大约阅读时间需要 2 分钟。
问题:写一个函数,判断给定的两个数字是否是符号相反的,不可以使用比较运算符。
例如 fun(-1, 100) == true; fun(5,6)=false; fun(-1,-2)=false; 同时,规定0属于正数。
在二进制表示中,最高位是1的话,就是负数。最高位为0则为正数。因此我可以想办法通过位运算来判断。1 ^0 = 1。所以 负数^正数=负数。其实就是类似于乘法了。
#include但是,这里用到了比较运算符。其实完全可以把 <0 的比较去掉,因为我们只需要知道第一位符号位即可。#include bool oppositeSigns(int x, int y){ return ((x ^ y) < 0);}int main(){ int x = 100, y = -100; if (oppositeSigns(x, y) == true) printf ("Signs are opposite"); else printf ("Signs are not opposite"); return 0;}
bool oppositeSigns(int x, int y){ return ((x ^ y) >> 31);}右移31位,则只剩下最高位符号位,不是0,就是1。
转载地址:https://blog.csdn.net/LaoJiu_/article/details/51325131 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月08日 22时32分09秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【小技巧】argc和argv的用法
2019-04-27
学不下去了怎么办?
2019-04-27
二叉树的前中后序遍历(迭代法)(带动画)
2019-04-27
【小技巧】【XShell】【Xftp】Windows桌面与Linux虚拟机互传文件
2019-04-27
【redis入门】Centos下安装redis
2019-04-27
【redis入门】redis安装后相关知识串讲
2019-04-27
【redis】来吧,展示一下redis 发布-订阅模式
2019-04-27
当下热点词再学:redis缓存预热、更新、降级,限流
2019-04-27
【redis6.0.6】redis源码慢慢学,慢慢看 -- 第五天:adlist
2019-04-27
别抖,OK? 操作系统抖动现象、网络抖动与延迟、函数抖动之防抖与节流,串讲
2019-04-27
通过域名获取主机IP -- struct addrinfo
2019-04-27
anetTcpGenericConnect 详解
2019-04-27
【转】花 10 分钟看一看,少走 30 年弯路
2019-04-27
全面分析 MySQL并发控制
2019-04-27
centOS8 安装MySQL8(亲测)
2019-04-27
虚拟机卡死在登录界面
2019-04-27
架构图、用例图、流程图、时序图、类图
2019-04-27