最大值和最小值的操作处理
来源:互联网 发布:淘宝买苹果平板可靠吗 编辑:程序博客网 时间:2024/05/29 02:09
在写代码的时候,尤其是数字计算的时候,我们会经常碰到计算边界的问题,也就是说溢出的问题,比如说:最小的负数-1会出现什么情况?最大的正整数+1会出现什么情况?
先看看下面的代码
package com.test;public class Test {public static void main(String[] args) {Test test = new Test();Operator op = test.getMaxInstance();test.printResult("MaxValue", op);op = test.getMinInstance();test.printResult("MiniValue", op);}public void printResult(String tag, Operator op) {System.out.println(tag + ": " + op.getValue());System.out.println(tag + "+1: " + op.add(1));System.out.println(tag + "-1: " + op.minues(1));}public Operator getMaxInstance() {return new MaxValue();}public Operator getMinInstance() {return new MinimalValue();}interface Operator {int add(int a);int minues(int b);int getValue();}class MaxValue implements Operator {final int value = 0x7fffffff;@Overridepublic int getValue() {return value;}@Overridepublic int add(int a) {return value + a;}@Overridepublic int minues(int a) {return value - a;}}class MinimalValue implements Operator {final int value = 0x80000000;@Overridepublic int add(int a) {return value + a;}@Overridepublic int minues(int b) {return value - b;}@Overridepublic int getValue() {return value;}}}
运行上面的代码结果是:
MaxValue: 2147483647MaxValue+1: -2147483648MaxValue-1: 2147483646MiniValue: -2147483648MiniValue+1: -2147483647MiniValue-1: 2147483647
对于上述操作,总结如下
下面用二进制来解释
最小值为 0x10000000====>10000000 00000000 00000000 00000000
最大值为0x7FFFFFFF=====>01111111 11111111 11111111 11111111
最小值-1=01111111 11111111 11111111 11111111======》转化为十进制要按照two's complement的操作来弄,就过就是上面那样
最大值+1=10000000 00000000 00000000 00000000======》转化为十进制要按照two's complement的操作来弄,就过就是上面那样
接下来会讨论float和double以及如何判断溢出。
0 0
- 最大值和最小值的操作处理
- Awk实现求和、平均、最大值和最小值的计算操作
- awk实现求和、平均、最大值和最小值的计算操作
- awk实现求和、平均、最大值和最小值的计算操作
- awk实现求和、平均、最大值和最小值的计算操作
- 队列实现插入,弹出,找到最大值和最小值的操作
- awk实现求和、平均、最大值和最小值的计算操作
- 获取随机数组最大值和最小值操作
- 谈谈int,long的最大值和最小值.
- 二治法求数组的最大值和最小值
- 两个数的最大值和最小值*
- 查找一个序列的最大值和最小值
- 求数组的最大值和最小值
- 求四个数的最大值和最小值
- 求数组的最大值和最小值
- 二维数组的最大值和最小值
- int型数值的最大值和最小值
- 转:二维数组的最大值和最小值
- Cocos2dx从零单排游戏开发(一)环境搭建
- 我的android(第三天)
- linux文件系统(一)——VFS的概念
- 字符设备驱动结构
- 迭代器iterator
- 最大值和最小值的操作处理
- poj 3253 Fence Repair
- java中的类!
- 【注意】在activity间传值值得注意的一个问题
- sdwehfgjadjqwqf
- java中的小技巧!
- 九、Linux用户管理之配置文件篇
- java的细节!
- HDU 2899 Strange fuction 二分 + 精度控制