zoukankan      html  css  js  c++  java
  • 二进制补码

    -----------siwuxie095

       

       

       

       

       

    1、概述

       

       

       

       

       

       

    2、补码规则

       

       

    如下:

       

    1

       

       

       

    2

       

       

       

       

    四位二进制数对应的十进制数补码和非补码表:

       

    二进制数

    十进制数补码

    十进制值

    0000

    0

    0

    0001

    +1

    1

    0010

    +2

    2

    0011

    +3

    3

    0100

    +4

    4

    0101

    +5

    5

    0110

    +6

    6

    0111

    +7

    7

    1000

    -8

    8

    1001

    -7

    9

    1010

    -6

    10

    1011

    -5

    11

    1100

    -4

    12

    1101

    -3

    13

    1110

    -2

    14

    1111

    -1

    15

       

       

       

       

       

    3、为什么使用补码

       

       

       

       

       

       

       

    4、补码运算的特征

       

       

       

       

       

       

       

       

       

    5、补码运算的原理

       

       

       

       

       

       

       

    小扩展:

       

    正数的原码、反码、补码都相同

       

    负数的反码是在原码的基础上,最高位(符号位)不变,其他位取反

       

    负数的补码是在反码的基础上,再加 1

       

    (也可以直接将此负数对应的正数原码,所有位取反再加 1

       

       

    是指一个计量系统的计数范围,如时钟(计量范围:0~11,模=12)。

    计算机也可以看做一个计量机器,它也有一个计量范围,即都存在一个 模。

       

    模实质上是计量器产生溢出的量。它的值在计量器上表示不出来,计量器上

    只能表示出模的余数(如时钟的模=12表示不出来,不在0~11中)

       

    任何有模的计量器,均可化减法为加法运算(如时钟的顺逆拨动,当时针

    10点,要拨到6点,可以顺拨 8,「10+8=12+6=6」也可以逆拨 4

    10-4=6」,即在12为模的系统中,减4和加8的效果一样,凡是减4运算

    都可以用加8代替,对模12而言,84互为补数)

       

    在二进制中,正数和对应的负数相对于 2n 来说,互为补数

    〔即 模的二进制减去正数的二进制补码即为负数的二进制补码〕

       

       

       

    另:负数补码的其他求法

       

    1)负数补码 = 2n - 对应正数的补码

    2)将对应正数的二进制补码进行比特反相运算,再将结果加1

    3)先写出对应正数的二进制补码:

    • 先由最低比特开始找。
    • 若该比特为0,将补码对应比特填0,继续找下一比特(较高的比特)。
    • 若找到第一个为1的比特,将补码对应比特填1。
    • 将其余未转换的比特进行比特反相,将结果填入对应的补码。

         

         

         

         

      特别的数字:

      有二个数字的补码等于本身:一个是0,另一个为该比特可表示最大绝对值负数(即1000...)

         

         

         

      为什么补码能这么巧妙实现了正负数的加减运算?

         

      因为:指定n比特字长,那么就只有 2n 个可能的值,加减法运算都存在

      上溢出与下溢出的情况,实际上都等价于模 2n 的加减法运算

         

      这对于n比特无符号整数类型或是n比特有符号整数类型都同样适用

         

         

         

         

         

      【made by siwuxie095】

  • 相关阅读:
    httpd配置
    thymeleaf js 方法中参数 如何拼接进json对象,不转换为[object,object]
    mysql 8.0.18.zip安装配置方法图文教程(windows 64位)
    SpringBoot配置devtools实现热部署
    构建工具 Maven 的使用
    Java的 JAVA_HOME、Path、CLASSPATH环境变量小结
    IDEA创建springboot项目,特殊项目目录介绍(.idea、.iml、.gitignore、.mvn、mvnw、mvnw.cmd、.gitimodules、.gitkeep)
    统计代码量——SourceCounter.exe
    yml配置之static-path-pattern 与 static-locations,静态资源的访问
    联合索引
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/6531962.html
Copyright © 2011-2022 走看看