long类型强转成int类型解析
把1486115790696L转换为int类型结果是多少?
java采用补码存储整数,int型为32位,byte为8位 ,long为64位
正数的补码就是其本身
1486115790696在内存中表现为 0000 0000 0000 0000 0000 0001 0101 1010 0000 0011 0110 0111 0101 1111 0110 1000
负数的补码(原码取反,末位+1)
-1486115790696在内存中表现为 1111 1111 1111 1111 1111 1110 1010 0101 1111 1100 1001 1000 1010 0000 1001 1000
转换成int类型,截取后8位就变成 1111 1100 1001 1000 1010 0000 1001 1000
补码转换成原码 (除最高位不变,其他位取反,末位+1)
转换成原码是 1000 0011 0110 0111 0101 1111 0110 1000
转换成十进制,第一项为符号位,0正1负,所以值为-57106280
-1486115790696有long型强转成int类型值为-57106280
public class MyClass {
public static void main(String[] args ){
long i=1486115790696L;
int j=(int)-i;
System.out.println(j);
}
}
-57106280
Process finished with exit code 0
long类型强转成int类型解析
把1486115790696L转换为int类型结果是多少?
java采用补码存储整数,int型为32位,byte为8位 ,long为64位
正数的补码就是其本身
1486115790696在内存中表现为 0000 0000 0000 0000 0000 0001 0101 1010 0000 0011 0110 0111 0101 1111 0110 1000
负数的补码(原码取反,末位+1)
-1486115790696在内存中表现为 1111 1111 1111 1111 1111 1110 1010 0101 1111 1100 1001 1000 1010 0000 1001 1000
转换成int类型,截取后8位就变成 1111 1100 1001 1000 1010 0000 1001 1000
补码转换成原码 (除最高位不变,其他位取反,末位+1)
转换成原码是 1000 0011 0110 0111 0101 1111 0110 1000
转换成十进制,第一项为符号位,0正1负,所以值为-57106280
-1486115790696有long型强转成int类型值为-57106280
public class MyClass {
public static void main(String[] args ){
long i=1486115790696L;
int j=(int)-i;
System.out.println(j);
}
}
-57106280
Process finished with exit code 0