Java 中,byte 数据类型的取值范围为什么是 -128 - 127 ?其它数值类型 都雷同
byte 的取值范围:-128 - 127
基本的数学计算方法,一个byte占8位,第一位为符号位,还有7位,7位能表示最大为:2^7 - 1 怎么来的呢:看如下数学计算
1111 111 = 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 我们不用使用加法来算这个值,而是换种思路,如下:
(A * 2) - A = A 本身,对吧,那么:
(2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 )* 2 - ( 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 )= 依然是 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 的和
即:
2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 + 2^7 -
2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 通过抵消,最终变成了 2^7 - 2^0 = 2^7 - 1 = 127,就是这么来的。。。。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
我们只讨论 byte; byte 在计算机中是8位;第一位为符号位。0表示正数,1表示为负数,其余的7位表示 具体的值。要理解一点 就是 数值在计算机内存中的存储是补码的方式
存储的,有一定的规则,即正数的话 原码 反码 补码 一样,负数的话,原码是负数的绝对值,最高位 是1 ,反码是 最高位不变,然后其余位 取反 ,补码是 最高位不变,反码+1
举例:byte 能表示的正数的最大值为:
0111 1111 = 2的7次方 -1 = 127。
正数最小值为:
0000 0000 = 0;
正数的原码,反码 补码 相同。
再来看负数的最大负值:
1111 1111 = -2的7次方 -1 = -127
原码:1111 1111
反码:1000 0000
补码:1000 0001
------------------------------
再来看负数的最接近正数的值,即最小负值:
1000 0000 = -0;
原码:1000 0000
反码:1111 1111
补码:1000 0000(注意这里溢出了)
可见,-0 的原码 和 补码是一样的,实际上 计算机规定的,1000 0000 = -128 ;
通常说 -128 只有补码,没有原码和反码,因为原码是 -0 ,-0 你怎么能认为是 -128呢。
即:-128在计算机中的补码为:1000 0000 ,没有原码和反码;
是可以进行运算的,比如:
-128 + 3 = -125 在计算机中的计算如下:
补码(1000 0000)+ 补码(0000 0011)= 补码(1000 0011)
然后再把1000 0011转换成原码的步骤为:
符号位不变取反:1111 1100
取反后加1就是原码:1111 1101
再把原码转成十进制为:-125,计算的方法如图:

用计算器计算最快:原码去掉符号位,即:1111 1101 -->> 111 1101(7位) 粘贴在计算机的二进制那里:

总结:补码 1000 0000 就是 -128的意思,经过计算你会发现原码也是:1000 0000 ,但是我们通常说 1000 0000 没有原码,因为-0没有意义。
Java 中,byte 数据类型的取值范围为什么是 -128 - 127 ?其它数值类型 都雷同的更多相关文章
- C语言中各个数据类型的取值范围
因为CPU的差异,各系统中的数据类型所占的字节数(bytes)不同,二进制位数(bit)也不同.那么怎样才能知道自己系统的数据类型的字节数,位数呢? 授之以鱼不如授之以渔,大家可以自己从电脑里获取这些 ...
- 关于JAVA中Byte数据类型二进制赋值运算报错问题
自从JDK7更新之后,新增了二进制变量的表示,支持将整数类型用二进制来表示,用0b开头: 例如: byte b= (byte) 0b1000_0001; short s = (short) 0b100 ...
- JAVA中的变量及取值范围
字节是二进制数据的单位.一个字节通常8位长.但是,一些老型号计算机结构使用不同的长度.为了避免混乱,在大多数国际文献中,使用词代替byte.变量: 变量的数据类型:变量名=变量值 数据类型 基本型 数 ...
- 为什么数值类型byte取值范围是(-128~127)?
在解决这个问题之前,我们先了解几个概念? 一.原码, 反码, 补码的概念 正数的反码和补码都与原码一样: 负数的反码.补码与原码不同,负数的反码:原码中除去符号位,其他的数值位取反,0变1,1变0.负 ...
- 带符号的char类型取值范围为什么是-128——127
以前经常看到带符号的char类型取值范围是-128——127,今天突然想为什么不是-127——127,-128是怎么来的? 127好理解,char类型是8位,最高位是符号位,0正1负,所以011111 ...
- java中给集合快速取值最大值和最小值
public static void main(String[] args) { List list = new ArrayList(); list.add(new Double(123.23)); ...
- Java中byte、short、char、int、long运算时自动类型转化问题
-------------------------------------------------------------------------------------------------- ★ ...
- mysql中数据类型的取值范围
mysql整型bigint.int.mediumint.smallint 和 tinyint的语法介绍,如下: 1.bigint 从 -2^63 (-9223372036854775808) 到 2^ ...
- 关于JAVA中Byte类型的取值范围的推论(*零为正数,-128在计算机中的表示方法...)
先看一段推理<*一切都是在8个比特位的前提下,讨论二进制的符号位,溢出等等,才有意义*> +124:0111 1100 -124:1000 0100 +125:0111 1101 -125 ...
- Java中基本数据类型byte的溢出问题
Java中基本数据类型byte的溢出问题 问题源于:https://www.cnblogs.com/HuoHua2020/p/12326631.html 定义两个byte类型的数据,将其之和赋值给一个 ...
随机推荐
- poi4版本处理word里表格中的文字换行问题和设置字体样式
开发中遇到生成word文档的需求,其中里面存在表格,发现表格中一旦存在换行生成的模板就出现各种问题,反正就是出不来想要的结果.网上找了一些方法基本都不好用,最后找到一个靠谱点的方法 XWPFParag ...
- 报错:for..in loops iterate over the entire prototype chain, which is virtually never what you want.
for..in loops iterate over the entire prototype chain, which is virtually never what you want. 意思是使用 ...
- jQuery组织后续事件 事件冒泡 事件委托 键被按下 批量操作 hover input 事件
1. jQuery绑定事件的方式 1. $('').click(function(){}) 2. $('').on('click', function(){}) 2. 阻止后续事件执行 1. retu ...
- python · ssh · SQL | python 连接远程 SQL 数据库
python 连接本地 SQL 的 教程存档. 如果要连接远程的 SQL 数据库,需要先开一个 ssh 连接,在 ssh 连接里写 pymysql 的 connect 代码. 代码如下: ''' pi ...
- PMP项目变更管理及变更流程总结
转载请注明出处: 1. 变更管理流程 2.变更管理流程十步: 0 预防--1发起变更请求--2分析影响--3备选方案--4CCB批准--5更新项目管理计划--6沟通干系人--7执行--8检查--9总结 ...
- Object.defineProperty()实现双向数据绑定
<div id="app"> <input type="text" name="txt" id="txt&quo ...
- SoC scan implementation
scan chain产生之前需要进行scan drc的过程,判断cell是不是能够串到scan chain上去 mux-d scan cell(是最常用的scan cell),还有其他的scan ce ...
- 【转帖】SQUID TIME_WAIT值过高引起的服务器被拖慢
https://www.diewufeiyang.com/post/895.html 查看TCP的连接状态值: # netstat -n | awk '/^tcp/ {++S[$NF]} END {f ...
- [转帖]CygWin、MingW、MSYS之间的关系
https://www.jianshu.com/p/09198f6e0a3c 前言 在跨平台开发或移植中,经常会听说Cygwin.MingW.MSYS,他们之间是什么关系?对于将要完成的任务,应该选择 ...
- [转帖]RPC 框架总结与进阶
https://www.cnblogs.com/xiaojiesir/p/15579418.html 框架总结 Netty 服务端启动 Netty 提供了 ServerBootstrap 引导类作为程 ...