zoukankan      html  css  js  c++  java
  • 原码,反码,补码

    原码:二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

    反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

    补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

    例:

    [+7]反= 0 0000111 B                               [+0]反=00000000B
    [-7]反= 1 1111000 B                                [- 0]反=11111111B
    [-7]补= 1 1111001 B                                [ 0 ] 补=00000000B (仅此一个)
     
    (1) 已知原码,求补码。
    负数 :原码——(符号位不变,数值部分按位求反;得反码,再在其反码的末位加1。)—— 补码
    2) 已知补码,求原码。
    负数 :符号位不变,先取反后加1 ( 或者是先减1后取反)。
        但是需要注意 [1000 0000]补 = =-128,如果按照上面的运算 [1000 0000]补 = [0000 0000]这个是不正确的。
          如果是 8bit, 用补码可以表示的范围是 -128 ~ 127 补码可以多保存一个最小值。
     
    个人理解:就像是一个128个刻度的表盘(0-127个数字即[000 0000]-[111 1111]),正转到127=[111 1111] 表示正数127,当转到128的时候归零了。
         在负数里面就是反转一个刻度表示-1 ,反转到-127 = [000 0001],当再反转一个格到[000 0000]的时候这个128给了负数
                  也就是0 占用了+128 的位置。
              所以8bit 的补码表示范围是 -128 ~ 127 之间。
     
     
     
    本文为复制粘贴的结果,非原创。)——要是我创的别人也不用啊,哈哈
  • 相关阅读:
    笔记本越用越慢的解决方法。
    ubuntu 16.04 的IP地址变更
    如何把路由器当作交换机来使用
    通过 rufus 创建启动U盘,安装 VMWare Esxi
    Enable SMB2 on the Client
    Shiro入门学习与实战(一)
    Linux下Nginx1.9.9的安装
    Activiti工作流学习之SpringBoot整合Activiti5.22.0实现在线设计器(二)
    Activiti工作流学习之概述(一)
    Sqoop的安装及常用命令
  • 原文地址:https://www.cnblogs.com/sepeng/p/2993987.html
Copyright © 2011-2022 走看看