java 原码反码及补码 总结
数值在计算机中是以补码的方式存储的,在探求为何计算机要使用补码之前, 让我们先了解原码, 反码和补码的概念。
对于一个数, 计算机要使用一定的编码方式进行存储。 原码, 反码, 补码是计算机存储一个具体数字的编码方式。
一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。比如,十进制中的数 +2 ,计算机字长为8位,转换成二进制就是[00000010]。如果是 -2 ,就是 [10000010] 。因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 [10000010],其最高位1代表负,其真正数值是 -2 而不是形式值130([10000010]转换成十进制等于130)。所以将带符号位的机器数对应的真正数值称为机器数的真值。
- 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。
- 反码的表示方法是:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
- 补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。 (即在反码的基础上+1)
首先,根据运算法则减去一个正数等于加上一个负数, 即: 1-1 = 1+(-1), 所以计算机被设计成只有加法而没有减法, 而让计算机辨别”符号位”会让计算机的基础电路设计变得十分复杂,于是就让符号位也参与运算,从而产生了反码。
用反码计算, 出现了”0”这个特殊的数值, 0带符号是没有任何意义的。 而且会有[0000 0000]和[1000 0000]两个编码表示0。于是设计了补码, 负数的补码就是反码+1,正数的补码就是正数本身,从而解决了0的符号以及两个编码的问题: 用[0000 0000]表示0,用[1000 0000]表示-128。
注意-128实际上是使用以前的-0的补码来表示的, 所以-128并没有原码和反码。使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数。 这就是为什么8位二进制, 使用补码表示的范围为[-128, 127]。
转载于:https://www.cnblogs.com/zhang188660586/p/9752394.html
java 原码反码及补码 总结相关推荐
- java用的原码还是反码_java 原码 反码 和补码
--------- 原码.补码.反码 计算机是数字电路设备,由复杂的电子元器件组合而成,一个电子元器件在工作时,可以分为两种状态--高电平和低电平,表示数据用高电平表示1,低电平表示0,而多个电子元器 ...
- Java 原码反码补码
1.学习原码反码补码的目的是为了后面学习强制类型转换: 2.有符号数据表示法的几种方式: 原码:就是二进制定点表示法,即最高位为符号位,"0"表示正,"1"表示 ...
- c语言 原码反码和补码
计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的. 原码 一个数的原码(原始的二进制码)有如下特点: 1.最高位做为符号位,0表示正,为1表示负 2.其它数值部分就是数值本身 ...
- (转)java 原码反码补码计算 以及 取反运算,原码反码补码运算公式
[README] 转自: https://www.zhangshilong.cn/work/289454.html 1. 原码.反码.补码: (1)在Java中,所有数据的表示方式都是以补码形式来表示 ...
- 计算机原码 反码 和 补码
一.机器数和真值 1. 机器数 一个数在计算机中的二进制表示,叫做这个数的机器数.在计算机中最高位为符号位.0代表正数,1代表负数. +1 机器数(8位):0000 0001 -1 机器数(8位):1 ...
- 计算机真值范围,计算机的机器数,真值,原码, 反码和补码
机器数 一.数的符号数值化.实用的数据有正数和负数,由于计算机内部的硬件只能表示两种物理状态(用0和1表示),因此实用数据的正号"+"或负号"-",在机器里就用 ...
- 原码反码和补码,一篇就够了,全网最详细解析
其实对于计算机来说,并不存在原码和反码,计算机存储的二进制数据都是以补码的形式存放的,自然对数据的运算也是直接用补码来运算(计算机中只有加法器没有减法器) 我们都知道正整数(包括0)的补码是它本身,负 ...
- 负数的原码反码和补码
As we all know,正数的三码都一样,注意一下最高位为符号位即可: 负数的原码最高位为1,与真值之间换算方便,但对于做减法的操作却很无力,于是引进了反码和补码:负数的反码为它的正数按位取反, ...
- JAVA原码反码补码
pending... 转载于:https://www.cnblogs.com/mediocreWorld/p/8359202.html
- c语言原码 补码 反码,C语言 原码--反码--补码
//原码,反码,补码 #include #include //数值的表示方法--原码.反码和补码 //原码:最高位为符号位,其余各位为数值本身的绝对值 //反码: //正数:反码与原码相同 //负数: ...
最新文章
- Nat. Med. | 人工智能临床研究新指南
- python集合例题_python基础练习题、集合的讲解、一些公关方法
- T-SQL查询进阶--流程控制语句
- (chap2 简单的Http协议) HTTP性能优化之管线化pipelining
- 2020年信息系统项目管理师真题讲解:基础知识1/3
- html图片查看器工作原理,五分钟了解浏览器的工作原理
- ASA防火墙外部web应用端口与默认审查协议相冲突的解决方法
- [Coderforces600E] Lomsat gelral
- Angular里的RouterOutlet指令学习笔记
- figma设计_在Figma中使用隔片移交设计
- c++ vector学习
- EntityFramework的安装
- 动态添加Html单元格时,事件怎么写?如mouseover事件
- 计算机表演赛vr创意大赛,计算机表演赛新增VR创意大赛
- 统计学怎么求加权指数_统计学课程作业(统计指数)
- 聚类算法-k均值聚类(K-means)
- 高分三号卫星(GF-3)简介
- 爽!Android模拟器可以运行ARM应用了
- ECCV 2020 五项大奖出炉!普林斯顿邓嘉获最佳论文奖
- 小企业仓库管理软件设计开发