首页 > 其他分享 >原码、补码、反码的表示及计算

原码、补码、反码的表示及计算

时间:2022-11-25 15:03:41浏览次数:42  
标签:真值 反码 符号 补码 该数 原码

今天简单总结了一下计算机的原码、补码、反码的表示,谨以此文缅怀教过我数字逻辑电路课程以及计算机组成原理课程的老师。

原码、补码、反码的表示及计算_补码


一个数在计算机中的二进制表示形式我们称之为 机器数 或者 机器码 ,机器数是带符号的,在计算机用一个数的最高位存放符号,例如我们下面要讲到的补码、反码。

因为机器数有可能带有符号位,所以我们通常使用 真值 来表示一个机器数所代表的真正值。例如, ​​+4​​​ 、 ​​-5​​ 这样的数就是真值的十进制表示。


原码、补码、反码的表示及计算_补码_02

原码

原码、补码、反码的表示及计算_补码_03


原码就是在真值的基础上,在真值前面添加一位符号位,非符号位为该数绝对值的二进制表示。一般情况下,对于 正数 的真值,符号位为 ​​0​​ ;对于 负数 的真值,符号位为 ​​1​​ 。

例如:

真值 ,原

真值 ,原

特别的,对于数字 ​​0​​ 来说,原码有两种表示方式:

下面给出原码表示的定义:


对于一个除了符号位之外有 ​​n​​ 位的二进制数,原码的表示范围为 到


原码、补码、反码的表示及计算_补码_02

反码

原码、补码、反码的表示及计算_补码_03


对于 正数 来说,反码与原码一致;对于 负数 来说,反码是最高位即符号位不变,再对其余位按位取反。

例如:

真值 ,原 ,反

真值 ,原 ,反。

对于一个除了符号位之外有 ​​n​​ 位的二进制数,反码的表示范围为 到


原码、补码、反码的表示及计算_补码_02

补码

原码、补码、反码的表示及计算_补码_03


对于 正数 来说,补码与原码一致;对于 负数 来说,补码是该数的反码再加上 ​​1​​ 。

例如:

真值 ,原 ,反 ,补

真值 ,原 ,反 ,补。

下面给出补码表示的定义:


对于一个除了符号位之外有 ​​n​​ 位的二进制数,补码的表示范围为 到

原码、补码、反码的表示及计算_补码_02

求补码、反码、移码口诀

原码、补码、反码的表示及计算_补码_03


原补反,正三同。
负符定,余取反,
得反码,加一补。
补符反,得移码。

解释:

  • 原码、补码、反码,该数为正数的情况下,它们三者相同。
  • 该数为负数的情况下,符号位不改变,其余位取反,就得到了反码。将该反码加一得到的就是该数的补码。
  • 不管正数负数,将其补码的符号位取反,其余位不变,得到的就是该数的移码。

下面是一些求补码、反码、移码的例子。

真值

(十进制表示)

真值

(二进制表示)

对应的原码

对应的反码

对应的补码

对应的移码

-1

- 0000 0001

1000 0001

1111 1110

1111 1111

0111 1111

0

0000 0000

1000 0000

0000 0000

1111 1111

0000 0000

0000 0000

1000 0000

1

+ 0000 0001

0000 0001

0000 0001

0000 0001

1000 0001


标签:真值,反码,符号,补码,该数,原码
From: https://blog.51cto.com/u_15891283/5886736

相关文章

  • C - 原码、反码和补码
    原码计算机使用二进制编码存储数字.用第一个bit位表示符号,1表示负号,0表示正号.4个bit能够表示的数字:最小:1111→-7最大:0111→7但是原码不能进行加减......
  • golang获取补码,原码
    packagemainimport("encoding/binary""fmt""strconv")funcmain(){vara=[]byte{0x15,0x4B}varb=[]byte{0xE0,0x15}//fmt.Println(fmt.......
  • 源码补码与反码
    title:源码补码与反码comments:truedate:2022-11-2113:24:55tags:javacategory:计算机底层存储数据时使用的是二进制数字,但是计算机在存储一个数字时并不是直......
  • 原码,反码,补码
    源码源码就是该数的二进制数反码整数的反码是其本身,负整数的反码是0变1,1变0;补码整数的补码就是本身,负整数的补码是反码+1;......
  • object类(查看JDK原码,子类重写equals,hascode,toString,finalize)--JAVA
    一、equals==      publicclassequals{//把光标放在equals方法,直接输入ctrl+b--查看jdk源码publicstaticvoidmain(String[]args){Pers......
  • java 为什么要用补码_Java为什么使用补码进行计算的原因分析
    转自csdn---主要是前面的解释很通俗易懂,后面的没有细看,转过来以后查看方便。我们主要要解决的问题就是负数的表示,而众所周知,绝对值相等的两个正负数之和为0。假设我们有......
  • cs03_补码
    浅聊补码今天查资料遇到了补码的概念,可惜已经把专业课老师传授的知识忘得七七八八了,就上网查了下补码的资料,讲解五花八门,读了半天总感觉还是没有关联上自己的知识结构......
  • 原码、反码、补码知识点总结
    好久没接触这三个熟悉而陌生的概念,以前也没理解透彻这三个概念的真正含义与作用,现在来重新做一个清晰而简单的总结。首先,原码、反码、补码只是机器中对于数字的三种不同的表......
  • java基础-->源码,反码,补码 和位运算
    原码、反码、补码原码:十进制数据的二进制表现形式,最左边的是符号位,0为正,1为负。反码:正数的反码是其本身,负数的反码是符号位保持不变,其余取反。补码:正数的补码是其本身,......
  • 计算机是怎样进行补码运算的
    以int类型为例第32位存储符号,0表示正,1表示负,后面31位表示数值部分,最大为2147483647(231-1);若最高位是0,则直接输出,若为1,则先输出负号,然后对数值取补码后输出。 (1)两个正数......