刚读了老紫竹的blog: 不用比较运算符,判断int型的a,b两数的大小,考虑溢出问题.
自己试着实现了一下,用的是个苯法子 -- 把数值部分转换成0或1,再跟sign-bit整合。 谁还有更好的算法? 不妨share一下。
我是用Groovy实现的,基本上调用的都是Java的API,在JVM上同样是BYTECODE,就算是Java的*等价*代码吧。如大家要求的话,我可以把它转成纯Java code。
PS: 我的实现在int compare3(),老紫竹原算法的groovy实现是int compare2(),int compare1()是不考虑溢出的简单实现。
运行结果:

本文探讨了一种不使用传统比较运算符来判断两个int类型整数大小的方法,并考虑了溢出问题。作者提供了三种不同的实现方式,包括一种原始的简单实现、老紫竹提出的一种考虑溢出但不能区分等于和大于0的情况的方法,以及作者自己的方法,该方法不仅考虑了溢出问题,还能正确区分各种情况。
1708

被折叠的 条评论
为什么被折叠?



