zoukankan      html  css  js  c++  java
  • 2_C语言中的数据类型 (三)原码、反码、补码

    1.1       原码

    将最高位做为符号位(0代表正,1代表负),其余各位代表数值本身的绝对值

    +7的原码是00000111

    -7的原码是10000111

    +0的原码是00000000

    -0的原码是10000000

    1.2       反码

    一个数如果值为正,那么反码和原码相同

    一个数如果为负,那么符号位为1,其他各位与原码相反

    +7的反码00000111

    -7的反码11111000

    -0的反码11111111

    1.3       补码

    原码和反码都不利于计算机的运算,如:原码表示的7和-7相加,还需要判断符号位。

    正数:原码,反码补码都相同

    负数:最高位为1,其余各位原码取反,最后对整个数 + 1

    -7的补码:=

     10000111(原码)

    111111000(反码)

    11111001(补码)

    +0的补码为00000000

    -0的补码也是00000000

    补码符号位不动,其他位求反,最后整个数 + 1,得到原码

    用补码进行运算,减法可以通过加法实现

    7-6=1

    7的补码和-6的补码相加:00000111 + 11111010 = 100000001

    进位舍弃后,剩下的00000001就是1的补码

    -7+6 = -1

    -7的补码和6的补码相加:11111001 + 00000110 = 11111111

    11111111是-1的补码

    资料来源:传智播客  仅供学习研究

  • 相关阅读:
    搭建openstack系统初始化(2)
    Kvm虚拟化安装与虚拟机创建
    KVM-克隆和快照管理
    P4197 Peaks
    P4768 [NOI2018]归程
    #6145. 「2017 山东三轮集训 Day7」Easy 动态点分治
    P4178 Tree
    P4149 [IOI2011]Race
    P3806 【模板】点分治1
    P4724 【模板】三维凸包
  • 原文地址:https://www.cnblogs.com/wuchuanying/p/6280241.html
Copyright © 2011-2022 走看看