java byte最大值最小值问题
Posted 小辉哥哥哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java byte最大值最小值问题相关的知识,希望对你有一定的参考价值。
1.计算机编码
1.1 原码、反码和补码
在计算机内,定点数有3种表示法:原码、反码和补码。
原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码:表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码:表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
原码、反码不能直接进行数值计算。
1.2 计算机数值存储
在计算机中,数值均已补码形式存储。
2.计算步骤
仅以byte为例进行阐述,byte为一字节8位,最高位是符号位。
最大值是01111111(补码),补码即原码:
最大值为:2^0+2^1+2^2+2^3+2^4+2^5+2^6=(1-2)2^7/(1-2)=2^7-1=127
最小值是10000000(补码),首先计算反码(补码-1):
01111111
然后计算原码:
10000000
最大值为:-2^7=-128
3.等比数列
首项是a1,公比是q(q≠1),则Sn=a1(1-q^n)/(1-q);
4.byte无符号表示
byte a = (byte)234;
打印出来的结果为-22,看看原因:首先byte范围-128~127,打印出其他值也属正常。
234的二进制位:
11101010
计算机会把它当成负数,首先计算其反码:
11101001
然后计算其原码:
10010110
原码为-22
以上是关于java byte最大值最小值问题的主要内容,如果未能解决你的问题,请参考以下文章