一个字节能表示的范围及详解

一、一个字节能表示的范围及详解

范围:-128-127

详解:

一个字节有八位,第一位作符号位。0为正,1为负。

1. 正整数

正整数的原码、反码、补码均相同

2. 负整数

负整数原码为其绝对值后的原码(也就是正数的原码)

反码为原码各位取反

补码为反码基础上+1

eg:-127的二进制表示

原码:127(10) = 0111 1111(2)

取反:1000 0000

补码:1000 0001

二、二进制与十进制的转换

1. 二进制转十进制

整数例子:
在这里插入图片描述

小数例子:

在这里插入图片描述

2. 十进制转二进制

整数例子:

15(10) = 1111(2)

小数例子:

3.125(10) = 11.001(2)

三、为什么负数到-128,正数最大只有127?

此处借用“一坛剩菜”博主的解释

首先,一个字节有8位二进制位,理论上可以储存的数量为 2^8 即256。由于数字需要进行相应的运算(+ - * / …),所以我们希望256个数里面能够包含相应的负数,然而二进制本身没有表示负数。

所以,规定字节的第一个位是符号位,并且0表示正数,1表示负数。比如001001011表示正数,110100011表示负数。

这样一来,正数就能表示 2^7 即 127 ~ 0 之间的数,负数则能表示 - 2^7 即 -127 ~ 0 之间的数字。这就对于0的存储出现了重复, “+0” 即00000000 和 “-0” 即10000000。逻辑上来说 “+0” 和 “-0”同时存在,显然不合理,存储上来说 “+0” 和 “-0” 表示一个数但是占用了两个存储位,也不合理。

既然0重复不合理,那么是否可以只保留一种作为0的表示,另外一种作为其他数的表示呢?如果可以的话,不就解决了逻辑上和存储上的问题了吗?

那么到底是保留 “+0” 还是 保留 “-0” 呢?去除掉的那个“0”又表示什么数呢?首先,当前一个字节已经可以保存 127 ~ -127 (0重复) 即255个数。对于额外保存的数,我们当然是希望保存这个范围之外的数,并且最好“接壤” 127 ~ -127这个范围,那么优先考虑 128 和 -128。我们知道,字节的存储其实是使用补码来表示的,-127的补码是 10000001,这个数字 减1 刚好是 “-0” 10000000,-127 减1 等于 -128,所以这里将 “-0” 10000000 表示 -128 最合适。

所以,最后一字节的数表示范围就是 127 ~ -128 (256个数)。另外,像KB, MB, GB…都类似于这种存储方式。

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
字节字节数组字节数组 c字节数组 c 可字节数组 c 可以字节数组 c 可以理字节数组 c 可以理解字节数组 c 可以理解为字节数组 c 可以理解为一个字节数组 c 可以理解为一个字节数组 c 可以理解为一个由若字节数组 c 可以理解为一个由若干字节数组 c 可以理解为一个由若干个字节数组 c 可以理解为一个由若干个字字节数组 c 可以理解为一个由若干个字节字节数组 c 可以理解为一个由若干个字节字节数组 c 可以理解为一个由若干个字节组成字节数组 c 可以理解为一个由若干个字节组成的字节数组 c 可以理解为一个由若干个字节组成的数组字节数组 c 可以理解为一个由若干个字节组成的数组,字节数组 c 可以理解为一个由若干个字节组成的数组,每字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节数组 c 可以理解为一个由若干个字节组成的数组,每个字字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: 字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[]字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c =字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1,字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2,字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3,字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4,字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5};字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; 字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; //字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节,分字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节,分别字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节,分别为字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节,分别为1字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节,分别为1、字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节,分别为1、2字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节,分别为1、2、字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节,分别为1、2、3字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节,分别为1、2、3、字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节,分别为1、2、3、4字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节,分别为1、2、3、4、字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节,分别为1、2、3、4、5字节数组 c 可以理解为一个由若干个字节组成的数组,每个字节代表一个8位的二进制数。可以使用如下方式定义一个字节数组 c: byte[] c = new byte[]{1, 2, 3, 4, 5}; // 定义一个长度为5的字节数组,其中包含5个字节,分别为1、2、3、4、5。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值