本文主要是介绍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。
这篇关于java中负数转十六进制输出时有“ffff...“的原因。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!