int类型运算

AC_YE 2021-03-04 11:05:36
int i=1234578900+987543210; System.out.println(i);结果输出什么好像溢出了
...全文
879 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
老公⊙∀⊙! 2021-03-13
  • 打赏
  • 举报
回复
引用 6 楼 冰思雨的回复:
明显会造成溢出。 两个整数相加的结果超出的int类型的变量范围。 若将两个整数都转换成long类型进行相加,结果也转换成long型,即可得到正确的结果。 如果楼主想弄明白是否溢出的话,可以将这两个整数转换成二进制数进行相加,然后查看相加的结果。 1234578900 ==> 0100 1001 1001 0110 0010 1101 1101 0100 987543210 ==> 0011 1010 1101 1100 1011 0110 1010 1010 __________________________________________________ 2222122110 ==> 1000 0100 0111 0010 1110 0100 0111 1110 很明显,两数相加之和溢出到符号位了,使得正数变成了负数。 由于负数在计算机中采用的是补码进行表示的,所以,这个负数的值应该是去掉符号位后各位取反后再加一。 1 000 0100 0111 0010 1110 0100 0111 1110 相加的结果,首位是符号位 1 111 1011 1000 1101 0001 1011 1000 0001 各bit位取反 1 111 1011 1000 1101 0001 1011 1000 0010 取反后,再加一 ———————————————————— - 0x7 0xB 0x8 0xD 0x1 0xB 0x8 0x2 转成十六进制数 ____________ - 0x7B8D1B82 十六进制数的表示 ____________ -2072845186 十进制数的表示
很对,说的没错
HuangHe201691 2021-03-10
  • 打赏
  • 举报
回复
对的,int类型这个容器装不下了,试试换个更大的容器,比如Long
m0_48480703 2021-03-10
  • 打赏
  • 举报
回复
超出int的最大值了,重新定义一个long试试
finalfantasy_xu 2021-03-10
  • 打赏
  • 举报
回复
超过int类型的最大值
xiaoxiangqing 2021-03-10
  • 打赏
  • 举报
回复
用long就行了
老王就是我 2021-03-10
  • 打赏
  • 举报
回复
超过最大值。
不烦人的阙 2021-03-10
  • 打赏
  • 举报
回复
超过int的最大值,溢出了
冲上云霄 、 2021-03-10
  • 打赏
  • 举报
回复
引用 6 楼 冰思雨 的回复:
明显会造成溢出。 两个整数相加的结果超出的int类型的变量范围。 若将两个整数都转换成long类型进行相加,结果也转换成long型,即可得到正确的结果。 如果楼主想弄明白是否溢出的话,可以将这两个整数转换成二进制数进行相加,然后查看相加的结果。 1234578900 ==> 0100 1001 1001 0110 0010 1101 1101 0100 987543210 ==> 0011 1010 1101 1100 1011 0110 1010 1010 __________________________________________________ 2222122110 ==> 1000 0100 0111 0010 1110 0100 0111 1110 很明显,两数相加之和溢出到符号位了,使得正数变成了负数。 由于负数在计算机中采用的是补码进行表示的,所以,这个负数的值应该是去掉符号位后各位取反后再加一。 1 000 0100 0111 0010 1110 0100 0111 1110 相加的结果,首位是符号位 1 111 1011 1000 1101 0001 1011 1000 0001 各bit位取反 1 111 1011 1000 1101 0001 1011 1000 0010 取反后,再加一 ———————————————————— - 0x7 0xB 0x8 0xD 0x1 0xB 0x8 0x2 转成十六进制数 ____________ - 0x7B8D1B82 十六进制数的表示 ____________ -2072845186 十进制数的表示
张凯1 2021-03-10
  • 打赏
  • 举报
回复
有关Java整数编码的知识,可以看这一篇文章,https://blog.csdn.net/qq_37684467/article/details/114366711?utm_source=app&app_version=4.5.2
KeepSayingNo 2021-03-09
  • 打赏
  • 举报
回复
31位,楼主可以用手机计算机输入31个1看看这个二进制代表的十进制的数是多少
冰思雨 2021-03-09
  • 打赏
  • 举报
回复
明显会造成溢出。 两个整数相加的结果超出的int类型的变量范围。 若将两个整数都转换成long类型进行相加,结果也转换成long型,即可得到正确的结果。 如果楼主想弄明白是否溢出的话,可以将这两个整数转换成二进制数进行相加,然后查看相加的结果。 1234578900 ==> 0100 1001 1001 0110 0010 1101 1101 0100 987543210 ==> 0011 1010 1101 1100 1011 0110 1010 1010 __________________________________________________ 2222122110 ==> 1000 0100 0111 0010 1110 0100 0111 1110 很明显,两数相加之和溢出到符号位了,使得正数变成了负数。 由于负数在计算机中采用的是补码进行表示的,所以,这个负数的值应该是去掉符号位后各位取反后再加一。 1 000 0100 0111 0010 1110 0100 0111 1110 相加的结果,首位是符号位 1 111 1011 1000 1101 0001 1011 1000 0001 各bit位取反 1 111 1011 1000 1101 0001 1011 1000 0010 取反后,再加一 ———————————————————— - 0x7 0xB 0x8 0xD 0x1 0xB 0x8 0x2 转成十六进制数 ____________ - 0x7B8D1B82 十六进制数的表示 ____________ -2072845186 十进制数的表示
起名伤脑 2021-03-06
  • 打赏
  • 举报
回复
int类型范围-2147483648到2147483647,用Long类型
立青_ 2021-03-05
  • 打赏
  • 举报
回复
int最大2147483647
韩_师兄 2021-03-05
  • 打赏
  • 举报
回复
超过int类型的最大值
lin351550660 2021-03-05
  • 打赏
  • 举报
回复
使用 BigInteger
从不回头看_ 2021-03-05
  • 打赏
  • 举报
回复
试试用Long

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧