文档章节

int类型过大变成负数

tryme
 tryme
发布于 2017/09/08 11:35
字数 330
阅读 37
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

Coding and Paper Letter(三十九)

资源整理。 1 Coding: 1.Python库benchmark rio s3,用于在访问S3上的文件时对Rasterio / GDAL的多线程性能进行基准测试的工具。 benchmark rio s3 2.Pangeo-Binder Cookiecutter模板。 cook...

胖胖雕
31分钟前
0
0
Promise 对象

Promise(承诺) 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供...

简心
33分钟前
0
0
让UI设计师崩溃的瞬间,你经历过哪些?

隔行如隔山,这句话人人耳熟能详,但其实隔行并不可怕,大家各谋其事,各尽其职,倒也互不打扰,真正可怕的是,是内行还要受外行指点江山,而最难的部分,便是那沟通。流畅的沟通,和声细语,...

mo311
35分钟前
1
0
python进制转换

#进制转换print(bin(10)) #十进制转换成二进制print(oct(10)) #十进制转换成八进制print(hex(10)) #十进制转换成十六进制print(int('1010',2)) #二进制转十进制print(int(...

fadsaa
46分钟前
3
0
syntax error near unexpected token

最近不断重复在虚拟机CentOS测试安装gitlab,因为gitlab有一个脚本需要饭强才能下载,于是我先在windows下载好再上传到虚拟机,可是执行脚本的时候提示“syntax error near unexpected toke...

W_Lu
55分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部