--------- 原码、补码、反码

计算机是数字电路设备,由复杂的电子元器件组合而成,一个电子元器件在工作时,可以分为两种状态--高电平和低电平,表示数据用高电平表示1,低电平表示0,而多个电子元器件组合在一起时就可以表示更多的状态,即更多的数据,如:000表示0,001表示1,010表示2等等,这也就是我们所说的2进制数据表示法。我们把一个电子元器件表示的数字称为1位(bit),计算机一般将8个电子元器件组合成一个单元,称为一个字节(byte),即这个单元可以表示2^8=256个数字,取值范围0~255.

一个字节有8位,每一位都只可以表示两个数字0、1,我们把最左边的一位称为最高位,最右边的一位称为最低位。为便于描述,这里采用1个字节表示一个整数。

原码:

把最高位作为符号位,0表示正数,1表示负数。其余各位代表数值本身的绝对值,例如:

1表示为0000 0001,-1表示为1000 0001

7 表示 0000  0111   -7 原码表示为: 1000 0111

但是计算机并没有采用原码的计数方式表示数据,为什么呢?  问题出在这:+0表示为0000 0000,-0表示为1000 0000.

这样一来+0似乎不等于-0了。

反码:

反码的表示分为两种情况:

如果一个数为正数,则反码和原码相同. 同时 补码也和他们相同.

如果一个数为负数,则符号位不变,其余各位按原码取反。

例如:   1的原码为0000 0001,反码为0000 0001.

-1的原码为1000 0001,反码为1111 1110.

同样的问题存在于反码:+0的反码为0000 0000    -0的反码为1111  1111。正因为如此,人们寻找出了一种真正能使计算机表示数据无歧义的数据表示方法:补码。

补码:

模的概念:模是计量系统的计量取值范围。例如:时钟就可以看成是个计量器,它的取值范围是0~11,即模(mod)=12,

计算机也可以看成计量器。

“模”的实质是计量器“溢出”的量,是计量器不能表示的数值。任何有模的计量器都能化减法为加法运算,例如:在以10为模的系统中,8和2相对于模来说互为“补数”,实际上1和9,3和7等都有这个共同点,他们加起来等于10(模),他们都互为补数,那么,6-2 =4,2和8互为“补数”,6+8 = 14,去掉一个“模”:10,即14-10 =4;

在计算机中 数字用补码表示, 主要是为了0 的交叉问题:

+0 的原码:0000 0000

+0 的反码 0000 0000

+0 的补码: 0000 0000

-0 的补码: 0000 0000 导致结果一样 .因此 用补码表示 计算中的数字.

为什么要设立补码呢?

第一是为了能让计算机执行减法:

[a-b]补=a补+(-b)补

第二个原因是为了统一正0和负0

正零:00000000

负零:10000000

这两个数其实都是0,但他们的原码却有不同的表示。

但是他们的补码是一样的,都是00000000

特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)

[10000000]补

=[10000000]反+1

=11111111+1

=(1)00000000

=00000000(最高位溢出了,符号位变成了0)

同样,在计算机里面,n位计算机,设n=8,则他所能表示的数据取值范围是1111 1111,若再将该数值加1,等于1 0000 0000

有9位,由于计算机只有8位,所以最高位自然丢失,又变成0000 0000,所以,n位计算机的模就是2^n,这样,计算机就可以把减数用它相应的补数代替了。把补数用到计算机数的处理上,就叫补码。

补码表示:

如果一个数为正,那么补码、反码原码都相同,如果一个数为负,那么他的补码就是他的反码加1。

,-42就是通过将42的二进制代码的各个位取反,即对00101010 取反得到11010101 ,然后再加1,得到11010110 ,即-42 。

-42

1. 先得到它的绝对值转换成的二进制: 0010 1010 或者是得到-42 原码:1010 1010

2. 然后对这个值取反 1101 0101 或着是 原码取反码:  负数取反的步骤是;最高位不变,其他位取反 1101 0101

3 在这个再加1           1101 0110 (1+1 =10)

其实第1 种做法是错误的, 因为 补码:反码+1 .  应该先求得 -42 的原码 : 然后求反: 然后+1 ,而不应该是绝对值取反 因为正数的原码 和反码,补码都相同.

对正数取反  得到的结果就不是反码了. 只是单纯的取反.

负数的原码怎么求: 先得到正数的二进数,然后把最高位变为1.

负数的反码怎么求: 在原码的基础上,最高位不变, 其他各位取反.

未完。。。。继续写

java用的原码还是反码_java 原码 反码 和补码相关推荐

  1. java字节码常量池_java字节码常量池处理说明

    1. 根据java的字节码格式说明,常量池中每一项的大小不一样的.运行时,若要通过数组索引获取具体的一项时, 必须要经过一定的处理才能根据数组下标进行处理,具体的实现原理实际上就是空间换时间,可以参考 ...

  2. java中用于运行字节码的命令_Java字节码指令

    1. 简介 Java虚拟机的指令由一个字节长度的.代表着某种特定操作含义的数字(称为操作码)以及跟随其后的零至多个代表此操作所需参数(称为操作数)而构成. 由于Java虚拟机采用面向操作数栈而不是寄存 ...

  3. java反码补码原码作用_java原码补码反码关系解析

    本文为大家解析了java原码补码反码的关系,供大家参考,具体内容如下 原码:不管源数据是十进制还是十六进制,统统将数字转成二进制形式 反码:把原码的二进制统统反过来,0变成1,1变成0 补码:负数的反 ...

  4. java反码_Java:二进制(原码、反码、补码)与位运算

    一.二进制(原码.反码.补码) 二进制的最高位是符号位("0"代表正数,"1"代表负数): Java中没有无符号数: 计算机以整数的补码进行运算: 1.  原码 ...

  5. java 计算反码_java基础知识-原码、反码、补码、运算符

    一.原码.反码.补码 原码 一个数转化成二进制. 用最高位来表示正负,最高位为0表示正数,最高位为1表示负数. 例如: short i=5: 因为在java里short占2个字节转化成二进制就是 00 ...

  6. 用java程序编写原码补码转换_java 原码、反码、补码

    为什么要用? 计算机内部采用二进制表示数值.如十进制数10用二进制数表示为1010.设计算机字长为8,即1Byte.最高位表示符号,0为正,1为负 来看看用原码表示的数在进行加减乘除运算是会有什么问题 ...

  7. 反码、原码、补码的观点阐述

    我自己是不认可所谓的原码.反码的说法,但是很多人在计算负数的二进制时,都会使用反码和原码的概念,我这里就简单梳理下吧. 十进制2的二进制数(按8位的二进制举例)如下: 原码:0000 0010 补码: ...

  8. 计算机中的原码,计算机中的原码反码补码移码

    计算机中的原码反码补码移码 原码 数值 X 的原码记为 [X]原,如果机器字长为 n (即采用 n 个二进制位表示数据),则最高位是符号位,0 表示正号,1 表示负号,基余的 n~1 位表示数值的绝对 ...

  9. Java实战项目之个人日记本系统【源码+课后指导】_Java毕业设计/计算机毕业设计

    供大家练习学习用的Java实战项目来咯--[个人日记本系统]!Java实战项目之个人日记本系统[源码+课后指导]_Java毕业设计/计算机毕业设计https://www.bilibili.com/vi ...

最新文章

  1. 电大工商管理计算机考试,东方电大工商管理专科计算机期末复习EXCEL五题.docx...
  2. PHP serialize JSON 解析
  3. 设计模式学习笔记-基础知识篇
  4. mysql常用系统函数归类
  5. linux之openssh配置
  6. python.集合转列表_python 列表,元组,字典,集合,字符串相互转换
  7. nodejs的req取参req.body,req.params,req.query
  8. 【编辑器】VSCode+TEXLIVE环境配置,以SJTUthesis为测试用例
  9. jQuery UI dialog实现dialog弹框显示
  10. Linux - Kafka集群搭建
  11. 英文论文的proposal怎么写?
  12. 各大型网站架构分析收集
  13. 后台注册环信IM账号
  14. 李元翼 梧里 徒死無益
  15. SAP 荣获「中国好公司」头衔
  16. Android Studio 生成APK签名证书
  17. 长时间 正在加载个人设置 开机很慢
  18. Enzo丨Enzo 抗原回收试剂,pH 6方案
  19. Java Fork/Join与协程
  20. js中trim函数_30天中的30个Excel函数:03 – TRIM

热门文章

  1. JS的indexOf
  2. 计算机硬件部分可称为裸机,上财信管PPT第3章 计算机硬件与软件基础.ppt
  3. java beans_java beans的概念及应用?
  4. 曲线绕x轴旋转曲面方程_空间曲线绕空间直线旋转生成的旋转曲面方程
  5. TP5的目录常量和路径
  6. CRMEB删除公众号首页logo动画
  7. java 里如何实现逻辑返回值_☆技术问答集锦(五)
  8. c/c++格式化字符串的标识
  9. latex textbf没有用_LaTeX排版软件札记 Win10 LyX+TeXLive
  10. 【excel】vlookup