不用大于小于符号比较两个数的大小

sasa27227 2020-04-21 10:26:48
给予两个数 x 和 y ,如果 x<=y 则返回 1 ,否则返回 0 。
其中x和y都是int型的整数,要求只能用 ! ~ & ^ | + << >>这些运算符,最多使用24个运算符。
且只能使用顺序结构,不能使用if,while,for等,不能调用任何函数,不能使用强制类型转换。
...全文
621 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
末影人014 2020-04-22
  • 打赏
  • 举报
回复
return x <= y;
arfi 2020-04-22
  • 打赏
  • 举报
回复
!((y+(~x+1))>>31)
真相重于对错 2020-04-22
  • 打赏
  • 举报
回复
-如果不让用,看一下电路里面的减法器,都是位运算。
真相重于对错 2020-04-22
  • 打赏
  • 举报
回复
return (((a - b) >> 31) & 0x1)|(!(a^b))
sasa27227 2020-04-22
  • 打赏
  • 举报
回复
引用 5 楼 双杯献酒 的回复:
直接 return x <= y ? 1 : 0; 就是最简单的。 所以没必要用 ! ~ & ^ | + << >> 这些运算符
不是没必要用这些,是只能用这些,你用的小于号和结构都是禁用的
lin5161678 2020-04-22
  • 打赏
  • 举报
回复
很多人没注意到2个问题 1 int 未必是32bit 2 相等也要返回1
zerozerg2006 2020-04-22
  • 打赏
  • 举报
回复
我觉得3楼大佬的式子非常正确 先构造出减法,再构造出大于0的表达式
双杯献酒 2020-04-22
  • 打赏
  • 举报
回复
直接
return x <= y ? 1 : 0;
就是最简单的。
所以没必要用 ! ~ & ^ | + << >> 这些运算符

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧