社区
Java SE
帖子详情
int型计算问题
seabreeze9802
2006-10-16 05:13:38
2的15次方等于2147483647,为什么加1后结果是-2147483648?
...全文
447
18
打赏
收藏
int型计算问题
2的15次方等于2147483647,为什么加1后结果是-2147483648?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
SaintKaKa
2006-10-25
打赏
举报
回复
看看反码,补码基础知识
尽量尝试自己解决
seabreeze9802
2006-10-20
打赏
举报
回复
TO lovedream3009():
>>而溢出后的10000000000000000000000000000000,符号位因进位而发生变化,所以为负数。
到这里为止我都能理解,但是
10000000000000000000000000000000
是怎么变成
11111111111111111111111111111111
的?
这一步能够解释的话就圆满了。
asymmetric
2006-10-19
打赏
举报
回复
基础知识 补码
lovedream3009
2006-10-19
打赏
举报
回复
提问者注意:
1、2的15次方不等于2147483647,2的31次方才等于2147483647;
2、2的31次方加1后,确实会发成溢出的现象,而溢出后的10000000000000000000000000000000,符号位因进位而发生变化,所以为负数。
顺便请你计算一下11111111111111111111111111111111的值是多少,这样你就不会把头想破了也没有答案了
sunangle
2006-10-19
打赏
举报
回复
超出int型表示范围了
seabreeze9802
2006-10-19
打赏
举报
回复
TO huangtut() :
>>我知道int型是32位的,第1位用来表示符号
wanglanqiao
2006-10-17
打赏
举报
回复
三个bit的有符号数的范围:[-4,3], 100:-4, 011:3。
huangtut
2006-10-17
打赏
举报
回复
看看二进制的运算法则,第一位是符号位
seabreeze9802
2006-10-17
打赏
举报
回复
我知道是超过int型表示范围,所以做个试验想看看结果是什么。
现在结果出来了,是-2147483648,但是怎么解释呢?
所谓知其然,还要知其所以然嘛。
我想还是buyaowen(外包需要掌握三点)的说法比较正确,但是也太简洁了吧,
哪位大哥能不能再补充两句?
Gallen1983
2006-10-16
打赏
举报
回复
超出int型表示范围了
huaxiagongzhu
2006-10-16
打赏
举报
回复
过长溢出了
dennisslea
2006-10-16
打赏
举报
回复
负数的计算机表示方法,去了解一下就知道原因了!
seabreeze9802
2006-10-16
打赏
举报
回复
谢谢楼上各位。
不过本人基础学得不好,能不能解释得更详细些?
我知道int型是32位的,第1位用来表示符号,2的31次方就是
01111111111111111111111111111111
加1后应该是
10000000000000000000000000000000
怎么会变成
11111111111111111111111111111111
的?
想破头就是不理解这一点。
Camelh
2006-10-16
打赏
举报
回复
溢出了
buyaowen
2006-10-16
打赏
举报
回复
原码
补码
反码
tonyzhangcn
2006-10-16
打赏
举报
回复
类型 宽度 取值范围
byte 8位 -256到256
short 16位 -32768到32767
int 32位 -2147483648到2147483647
long 64位 -9223372036854775808到9223372036854775807
hotsunn
2006-10-16
打赏
举报
回复
up
tonyzhangcn
2006-10-16
打赏
举报
回复
你要知道int的长度是多少,取值范围是多少就明白了。
String转
int
本套视频详细讲解了String如何转换成
int
,这在开发实践中会频繁遇到。
int
类
型
需要从文本框录入,如学生身高,服务器接收到的是String类
型
,使用时需要转换成
int
类
型
。类
型
转换时需要使用到包装类的方法,8种基本类
型
都有对应的包装类。
int
、double类
型
计算
问题
使用两个
int
变量
计算
的结果默认是
int
型
的值,13883 / 100 = 138如果要获取double类
型
的结果,两个
计算
数必须有一个是double类
型
,((double)13883) / 100 = 138.83注:数学
计算
中,必然的结果,在
计算
机中不一定正确;
计算
机
计算
中,首先会考虑两个变量的类
型
,然后再
计算
结果,并根据类
型
要求,保存
计算
结果============
int
类
型
在
计算
机中的存储(原码,反码,补码)
int
类
型
在
计算
机内存总以补码形式存储
int
在
计算
机中占4Byte, 共32位。最大正数是2**31 -1=2147483647, 最小负数为 -2**31=-2147483648。 原码,反码,补码的基础概念 对于一个32位操作系统来讲,一个
int
类
型
数字的存储是32个二进制数字表示的形式。 原码:
计算
机中一种对数字的二进制定点表示方法。原码表示法在数值前面前面有一位符号位(即最高位为符号位),正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。 反码:正数的反.
int
类
型
计算
时溢出
问题
!
在java中 代码 //不满一小时舍去 有效期
int
days = (
int
) ((expiredTime.getTime() - date.getTime()) / (1000 * 3600)); 数据的溢出: 当整数的数据大小超出了可以表示的范围,而程序中又没有做数值范围的检查时, 这个整
型
变量所输出的值将发生紊乱,且不是预期的运行结果。 01 // 整数值如...
关于
int
类
型
的大小
int
类
型
的大小就是一个
计算
机的字长,而
计算
机的字长是cpu一次能处理的二进制数的位数,也就是看cpu里面寄存器的位数。 在一个32位的
计算
机里,
int
就是4个字节;在64位的
计算
机里,
int
就是8个字节。 在程序里可以用 sizeof(
int
) 来查看
int
的大小。 但是我在自己的64位机器上用 Visual Studio 的时候调成x64的调试环境得到的结果
int
还是4位,可能和创建的...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章