java中long转int的原理

java中long转int的原理long转为int需要强转都很熟悉,那么介绍一下强转的具体原理。首先在计算机中,计算加法减法是用补码计算的。正数的补码为其二进制表示。负数的补码为其模的二进制表示取反加一。加入为八位二进制加法,如:+3+(-5) +3的补码为00000011-5的模为+5,二进制表示为00000101,取反为11111010,加一后为11111011,所以-5的补码为11111011加法计算公式为:两个数的补码相…

long转为int需要强转都很熟悉,那么介绍一下强转的具体原理。

首先在计算机中,计算加法减法是用补码计算的。

正数的补码为其二进制表示。负数的补码为其模的二进制表示取反加一。

加入为八位二进制加法,如:+3+(-5) 

+3的补码为00000011

-5的模为+5,二进制表示为00000101,取反为11111010,加一后为11111011,所以-5的补码为11111011

加法计算公式为:两个数的补码相加,如果是正,则直接输出,如果是负,则除符号位以外取反加一

+3和-5的补码之和为11111110,为负数,去掉符号位第一位 1 ,剩下1111110,取反加一后为10

10为十进制中的2,所以带上符号位为-2。

众所周知,java中long为8字节64位,int为4字节32位。

java如果long强转为int,做的事为:直接取低位32位作为值,但是看做补码。

代码如下:

long  long= 37444124124l;

System.out.println((int)long);

输出值为-1210581540

首先37444124124 转为二进制为

100010110111110101111111110111011100

后32位为:10110111110101111111110111011100

这个后32位直接当做计算结果输出:符号位为1,则是负数,负数取后31位取反加一

1001000001010000000001000100100

为:1210581540

加上符号位为-1210581540

今天的文章java中long转int的原理分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/5348.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注