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