zoukankan      html  css  js  c++  java
  • 【码制】关于原码,反码,补码的一些笔记和理解

    前提:1.本文使用8位二进制表示

       2.主要是定点数的的使用

       3.正数的原,反,补码相同

    正文:一.整数

       8位二进制原码的表示范围:-127~+127
       8位二进制反码的表示范围:-127~+127
       8位二进制补码的表示范围:-128~+127

       -(2^7-1)= -127         原码:1111 1111  补码:1000 0001

       2^7-1= +127              原码:0111 1111  补码:0000 0001

    在原码,反码中0分为  +0  和  -0;

    【+0】原=0000 0000

    【-0】原=1000 0000

    在补码的表示法中,0只有一种表示形式:

    【+0】补=0000 0000

    【-0】补=1111 1111 + 1=1 0000 0000(由于受到设备字长的限制,最后的进位的丢失)

    所以有【+0】补=【-0】补=0000 0000

       提问:为什么补码中会多出现-128的数字?

       答案:首先【-0】原=1000 0000  在 补码在中由于字长的限制使得【+0】补=【-0】补=0000 0000

       其次 原,反,补码的二进制范围都为0111 1111到1111 1111

        【-0】在补码中的二进制丢失,但是1000 0000任然存在,那么应该1000 0000应该代表什么呢?  

     

       再来说一说 -128 的机器码

       原码:1 1000 0000

       反码:1 0111 1111

       补码:1 1000 0000,截取低8位即1000  0000,表示的是一个负数。

       补码正好也是1000 0000,于是便填充了【-0】的补码 1000 0000 的空位

       于是补码的范围便是  -128 ~ +127

  • 相关阅读:
    进度条与拖动条的使用学习
    双指针,BFS和图论(三)
    dubbo文档笔记
    ByteBuf
    Netty源码解析—客户端启动
    Netty源码解析---服务端启动
    java并发程序和共享对象实用策略
    docker命令
    elasticSearch基本使用
    Filebeat6.3文档—Log input配置
  • 原文地址:https://www.cnblogs.com/Zoeun/p/11480068.html
Copyright © 2011-2022 走看看