byte类型的最小值为什么是-128而非-127


之前计算机基础内容忘得差不多了。

关于数据类型表示的数据范围问题, 这里byte类型表示的是-128~127 , 为什么不是-127~127 ?其实不光是byte类型,诸如byte、short、int、long等涉及到有符号的数据内向都存在负数表示要多一位的问题, 为什么是这样的呢? 这其实是一个计算机内部的数值表示方法的问题,一般来说,计算机科学表示数值的方法有:原码、反码和补码,现在的计算机用补码存储整数数值


原码,就是用二进制表示的原始编码,
反码,就是除符号位外,其它位取反
补码,正数的补码等于原码,负数的补码等于反码加1

 

在这里以byte为例,

计算机中1byte=8bit,因此byte的最大正数为二进制的01111111 = 27-1 = 127 (0位符号位),这个没问题,

对于负数而言,其补码由于需要反码加1 , 对于11111111其补码就是10000001=-1,依次类推11111110补码为10000010=-2........一直到10000001补码为11111111=-127,接下来最大的负数为10000000十进制其实是-0 ,其实是没有意义的(与+0重复),计算机就将这一数值10000000表示为最大负数-128

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM