java中负数转十六进制输出时有“ffff...“的原因。

 运行结果:

 

 java中的byte类型占用一字节,int类型占用2字节,long类型为四字节。当负数转为补码时,转换原理是:最高位(符号位)不变,其余位按位取反,然后末位加1。所以当int类型和long类型的的-127转为补码时,除了符号位外(负数符号位是1)和低八位外(低八位存储-127),其他位(原码全为0)会全变为1,所以最终的结果除了低八位外其他位全为1,转换为16进制的话每连续的每四位1就是一位f。正数由于符号位是0,且正数的补码就是原码,不用换算,int和long类型的127的高位全是0,转换为16进制也是0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值