long转为int需要强转都很熟悉,那么介绍一下强转的具体原理。
首先在计算机中,计算加法减法是用补码计算的。
正数的补码为其二进制表示。负数的补码为其模的二进制表示取反加一。
加入为八位二进制加法,如:+3+(-5)
+3的补码为00000011
-5的模为+5,二进制表示为00000101,取反为,加一后为,所以-5的补码为
加法计算公式为:两个数的补码相加,如果是正,则直接输出,如果是负,则除符号位以外取反加一
+3和-5的补码之和为,为负数,去掉符号位第一位 1 ,剩下,取反加一后为10
10为十进制中的2,所以带上符号位为-2。
众所周知,java中long为8字节64位,int为4字节32位。
java如果long强转为int,做的事为:直接取低位32位作为值,但是看做补码。
代码如下:
long long= l;
System.out.println((int)long);
输出值为-
首先 转为二进制为
后32位为:0
这个后32位直接当做计算结果输出:符号位为1,则是负数,负数取后31位取反加一
000
为:
加上符号位为-
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215978.html原文链接:https://javaforall.net
