之前计算机基础内容忘得差不多了。
关于数据类型表示的数据范围问题, 这里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