文档章节

int类型过大变成负数

tryme
 tryme
发布于 2017/09/08 11:35
字数 330
阅读 55
收藏 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类型即可!!!

© 著作权归作者所有

共有 人打赏支持
上一篇: Jenkins安装
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
关注C++细节——使用内置算术类型

C++中整型数有点令人迷惑不解。就像C语言一样,C++被设计成允许程序在必要的时候直接处理硬件,因此整型被定义成满足各种各样硬件的特性。大多数程序员可以(应该)通过限制实际使用的类型来...

iaccepted
2011/08/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Shell脚本——cat/EOF输出多行

在某些场合,可能我们需要在脚本中生成一个临时文件,然后把该文件作为最终文件放入目录中。(可参考ntop.spec文件)这样有几个好处,其中之一就是临时文件不是唯一的,可以通过变量赋值,也...

吴伟祥
12分钟前
3
0
线程安全性的文档化(70)

当一个类的实例或者静态方法被并发使用的时候,这个类的行为如何, 是该类与客户端程序的行为约束 如果文档中没有相关描述,那么可能导致未同步或过度同步的情况 并不是说文档中出现Synchro...

Java搬砖工程师
14分钟前
1
0
ubuntu16.04下安装postgresql 10.3

在网上找了不少博客,结果还是一大坨的坑要我踩,踩完之后总结一下下吧!(适合初学者) 环境及资源 Linux版本:ubuntu16.04 PostgresSQL版本:postgresql-10.3 PostgreSQL官网下载地址:htt...

杨鹏飞乀
16分钟前
2
0
.NET Core 2.1 跨域问题的解决

https://blog.csdn.net/qq_42220663/article/details/82381386

lsy999
25分钟前
1
0
LinkedList基本用法

LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用. LinkedList的构造函数如下 1. public LinkedList(): ——生成空的链表 2. public LinkedList(Collection col)...

whoisliang
28分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部