文档章节

int类型过大变成负数

tryme
 tryme
发布于 2017/09/08 11:35
字数 330
阅读 24
收藏 0

计算机存储系统使用补码标识,int类型占32位,首位是符号位:0表示正数,1表示负数。

  • 正数补码与原码相同
  • 负数补码除符号位其余各位与原码取反,然后加1

最近工作看到一个之前的人写的日期工具类,本来想用Apache的commons包的DateUtils工具类,但是没有找到想要的方法,转而求其次使用封装的工具类,结果遇到一个问题。

        需求:给定一个Date对象,找到特定天数后的日期时间

工具类的方法代码是这样写的:

public static Date datetimeAddDay(Date datetime, int day) {
	datetime.setTime(datetime.getTime() + day * 24 * 60 * 60 * 1000);
	return datetime;
}

猛的一看,并没有什么不对,结果运行时日期不对,写个测试类跑了一下,大吃一惊!!!

@Test
public void testDatetimeAddDay() {
    Date datetime = new Date();
    System.out.println("当前时间:" + datetime);
    Date datetimeAddDay = DateUtil.datetimeAddDay(datetime, 30);
    System.out.println("30天后:" + datetimeAddDay);
}

运行结果:

这时间还给我倒回去了,原来是工具类的方法加的毫秒数超过int类型最大值了 2的31次方-1,符号位成了1,整体变为负数。所以工具类中运算的毫秒数使用long类型即可!!!

© 著作权归作者所有

共有 人打赏支持
tryme
粉丝 0
博文 8
码字总数 2059
作品 0
海淀
程序员
byte&oxff之格式转换原理解析

最近需要一个将字节数组转换为十六进制字符串输出的函数,于是开始编码如下: 1 2 3 4 5 6 7 8 9 10 11 运行测试,一旦遇到负数总出现未可预料的结果,如参数为{-125,125,115,89}时,运行...

zmx729618
2017/12/13
0
0
java io FilterInputStream BufferedInputStream

FilterInputStream的结构图 /** A FilterInputStream contains some other input stream, which it uses as its basic source of data, possibly transforming the data along the way or p......

牛哥哥
2012/08/11
0
0
汇编总结:mov指令

mov指令的作用: mov指令可能是汇编里用的最多的指令了,完成c语言里的赋值。 mov指令种类: 1.普通的mov指令2.做符号扩展的movs3.做零扩展的movz 1.普通mov的种类有: movb #完成1个字节的复制...

guonaihong
2015/09/14
6.5K
0
小蚂蚁学习C语言(29)——C语言补码(下)

解释以下问题: vc++6.0中一个int类型的变量所能存储的数字的范围是多少 int 类型变量所能储存的最大整数用十六进制表示是: 7FFFFFFF int 类型变量所能存储的绝对值最大的负整数用十六进制表...

嗜学如命的小蚂蚁
2015/12/25
44
0
JAVA按位逻辑运算基本教程(1)

一、基本概念 所有的整数类型以二进制数字位的变化及其宽度来表示。例如,byte 型值42的二进制代码是00101010 ,其中每个位置在此代表2的次方,在最右边的位以20开始。向左下一个位置将是21,...

Pracy
2010/03/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

angular指令监听ng-repeat渲染完成后执行自定义事件方法

今天工作中遇到需要用到ng-repeat遍历渲染完后执行某个操作,angular本身并没有提供监听ng-repeat渲染完成的指令,所以需要自己创建自定义指令。 在ng-repeat模板实例内部会暴露出一些特殊属...

孟飞阳
33分钟前
1
0
URLEncoder和URLDecoder

public static void main(String[] args) { String str1 = "https://test1-life.pingan.com/ilifecore/productMall/loading.html?productId=8000000241&channelCode=XCX00001&productCode=00......

鬼才王
43分钟前
2
0
对象及变量的并发访问-第一篇

方法内部的变量为线程安全变量 “非线程安全”问题存在于“共享变量”中,如果是方法内部的私有变量,则不存在“非线程安全”问题,所得结果也就是“线程安全”的。 package chaprer3;/**...

简心
44分钟前
1
0
程序媛眼中的程序猿原来是这样子的!

一直都想写一篇关于描述程序员的文章,但是一直没能开头,一来因为文笔不好,更主要的原因是貌似对程序员既熟悉又不熟悉,很怕写出来的是以偏概全,给大家造成对程序员的既定印象,不过,管他...

Java小铺
今天
1
0
bean标签

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 bean标签 bean标签中的init-method属性,该属性...

凯哥学堂
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部