为什么byte类型的范围是-128~127

Hello

为什么byte类型的范围是-128~127

原码
实际二进制的数值 正数:0 0000001 负数 1 0000001

反码
正数的反码依然是其原码,负数的反码是负数原码除符号位以外的按位取反。

补码
实际上计算机真实存储的二进制

正数

在计算机中用原码表示

反码 = 原码
补码 = 原码

负数

在计算机中用原码表示

反码 = 负数原码除符号位以外的按位取反

例 原码 1 0000001 反码 1 1111110

补码 = 负数的反码加1

例 原码 1 0000001 反码 1 1111110 补码 1 1111111

负数的补码第二种运算方式

  • -1 取-1绝对值的原码 0 0000001
  • 将负数绝对值得原码 每位按位取反(包括符号位)+1 得出负数补码 1 1111110 +1 = 1 1111111

注:当我们通过负数原码去结算负数补码时,取反时符号位不参与取反
当我们通过负数绝对值的原码计算补码时,取反时符号位参与取反

验证:计算存储的是补码 在计算机的底层只有加法,没有减法

一切的加减运算 实际上都是补码的相加运算

1
2
3
0 0000001
1 1111111
0 0000000

8位

最大正值:0 1111111 127
补码:0 1111111

最小正值:0 0000001 1
补码0 0000001

0:0 0000000 0 所谓的正0 是实际上的0
规定 补码0 0000000
1 0000000 -128

最大负值:1 0000001 -1 补码1 1111111
最小负值:1 1111111 -127 补码1 0000001

负数补码范围:10000001~11111111
正数的补码范围:00000001~0111111
00000000 0的补码
10000000 推算:10000000 -1
01111111 全位数取反 10000000 128

文章作者: HibisciDai
文章链接: http://hibiscidai.com/2018/08/28/2018-08-21-为什么byte类型的范围是-128~127/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HibisciDai
支付宝打赏
微信打赏