JAVA8

原始数据:000000 000000 000000 000000 1000000 000000 000000 000000

强转之后的数据:1000000 0000000 000000 000000 

1000000 000000 000000 000000 目前储存在计算机内部,计算机内部,计算机储存数据都是采用补码的形式存储,所以10000000 000000 000000 000000 现在是一个补码形式,将以上的补码转换到原码就是最终结果。

long k = 2147483648L;

int e = (int)k;

System.out.println(e);//损失精度严重,结果是负数  【-2147483648】

依据目前所学知识内容,以下程序是无法编译通过

理由:50是int类型的字面值,b是byte类型的变量,显然是大容量int转换成小容量byte,大容量装换成小容量是需要添加强制类型转换符的,以下程序没有添加强转符号,所以编译报错。但是,在实际编译的时候以下代码编译通过了,这说明:在java语言中,当一个整数型字面值。没有超出byte类型取值范围的话,该字面值可以直接赋值给byte类型的变量。

byte b = 50

byte c = 127

整数补码

正数:正数的补码是其二进制表示,与原码相同。

例1:+9的补码是00001001。(这个+9的补码是8位2进制来表示的,补码表示方式很多,还有16位二进制补码来表示,以及32位二进制补码表示64位进制补码表示形式等,每一种补码表示形式只能表示有限的数字。)

负数:求负数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加一

同一个数字在不同的补码形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进制补码表示中,就是11111111111111110001。

例2:-5的补码。-5对应正数5(00000101)——所有位取反(11111010)——加一(11111011)

所以-5的补码是111111011

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值