参考:
http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html
http://blog.csdn.net/liushuijinger/article/details/7429197#comments

数值在计算机中是以补码的方式存储的,在探求为何计算机要使用补码之前, 让我们先了解原码, 反码和补码的概念。

  对于一个数, 计算机要使用一定的编码方式进行存储。 原码, 反码, 补码是计算机存储一个具体数字的编码方式。

  一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为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 原码反码及补码 总结相关推荐

  1. java用的原码还是反码_java 原码 反码 和补码

    --------- 原码.补码.反码 计算机是数字电路设备,由复杂的电子元器件组合而成,一个电子元器件在工作时,可以分为两种状态--高电平和低电平,表示数据用高电平表示1,低电平表示0,而多个电子元器 ...

  2. Java 原码反码补码

    1.学习原码反码补码的目的是为了后面学习强制类型转换: 2.有符号数据表示法的几种方式: 原码:就是二进制定点表示法,即最高位为符号位,"0"表示正,"1"表示 ...

  3. c语言 原码反码和补码

    计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的. 原码 一个数的原码(原始的二进制码)有如下特点: 1.最高位做为符号位,0表示正,为1表示负 2.其它数值部分就是数值本身 ...

  4. (转)java 原码反码补码计算 以及 取反运算,原码反码补码运算公式

    [README] 转自: https://www.zhangshilong.cn/work/289454.html 1. 原码.反码.补码: (1)在Java中,所有数据的表示方式都是以补码形式来表示 ...

  5. 计算机原码 反码 和 补码

    一.机器数和真值 1. 机器数 一个数在计算机中的二进制表示,叫做这个数的机器数.在计算机中最高位为符号位.0代表正数,1代表负数. +1 机器数(8位):0000 0001 -1 机器数(8位):1 ...

  6. 计算机真值范围,计算机的机器数,真值,原码, 反码和补码

    机器数 一.数的符号数值化.实用的数据有正数和负数,由于计算机内部的硬件只能表示两种物理状态(用0和1表示),因此实用数据的正号"+"或负号"-",在机器里就用 ...

  7. 原码反码和补码,一篇就够了,全网最详细解析

    其实对于计算机来说,并不存在原码和反码,计算机存储的二进制数据都是以补码的形式存放的,自然对数据的运算也是直接用补码来运算(计算机中只有加法器没有减法器) 我们都知道正整数(包括0)的补码是它本身,负 ...

  8. 负数的原码反码和补码

    As we all know,正数的三码都一样,注意一下最高位为符号位即可: 负数的原码最高位为1,与真值之间换算方便,但对于做减法的操作却很无力,于是引进了反码和补码:负数的反码为它的正数按位取反, ...

  9. JAVA原码反码补码

    pending... 转载于:https://www.cnblogs.com/mediocreWorld/p/8359202.html

  10. c语言原码 补码 反码,C语言 原码--反码--补码

    //原码,反码,补码 #include #include //数值的表示方法--原码.反码和补码 //原码:最高位为符号位,其余各位为数值本身的绝对值 //反码: //正数:反码与原码相同 //负数: ...

最新文章

  1. Nat. Med. | 人工智能临床研究新指南
  2. python集合例题_python基础练习题、集合的讲解、一些公关方法
  3. T-SQL查询进阶--流程控制语句
  4. (chap2 简单的Http协议) HTTP性能优化之管线化pipelining
  5. 2020年信息系统项目管理师真题讲解:基础知识1/3
  6. html图片查看器工作原理,五分钟了解浏览器的工作原理
  7. ASA防火墙外部web应用端口与默认审查协议相冲突的解决方法
  8. [Coderforces600E] Lomsat gelral
  9. Angular里的RouterOutlet指令学习笔记
  10. figma设计_在Figma中使用隔片移交设计
  11. c++ vector学习
  12. EntityFramework的安装
  13. 动态添加Html单元格时,事件怎么写?如mouseover事件
  14. 计算机表演赛vr创意大赛,计算机表演赛新增VR创意大赛
  15. 统计学怎么求加权指数_统计学课程作业(统计指数)
  16. 聚类算法-k均值聚类(K-means)
  17. 高分三号卫星(GF-3)简介
  18. 爽!Android模拟器可以运行ARM应用了
  19. ECCV 2020 五项大奖出炉!普林斯顿邓嘉获最佳论文奖
  20. 小企业仓库管理软件设计开发

热门文章

  1. 绅士还是流氓,坏事还是好事
  2. app启动html,启动页.html · 陈智峰/GangMeiBao_APP - Gitee.com
  3. 实现在浏览器实时播放海康威视监控画面
  4. FabGennix丨艾美捷 Olig2抗体
  5. 利用shape绘制渐变背景
  6. Go 学习笔记-切片
  7. 对于基本的捕鱼游戏设计思路(六)——碰撞检测
  8. 联想拯救者y700 2023参数 评测
  9. Windows下配置Golang开发环境,并安装配置GoLand IDE
  10. 收银技术周刊第二期硬件篇--各大收银软件流畅运行最低硬件配置一览表