zoukankan      html  css  js  c++  java
  • (5)原码反码补码

    # (1)概念  

    计算机的所有数据在底层都是以二进制的[补码]形式存储

    实际人们看到的数字是[原码]转化来的

    而[原码]是通过[补码]得到的

    补码 -> 原码 -> 最后人们看到的数

    ***进制转换的时候需要先把内存存储的补码拿出来变成原码在进行转换输出***​

    正数高位补0 负数高位补1(前面空白位全是1)

    数字1   00000000 1 正数高位都补0

    数字-1 111111111 1 负数高位都补1

    原码: 用来转换对应进制

    反码: 二进制码0变1,1变0叫做反码,反码用于原码补码之间的转换.(符号位不变)

    补码: 用来做数据的存储运算. 补码提出的根源是让计算机底层的实现减法操作(可以表达出一个数的正负)

    言外之意:计算机默认只会做加法,例:5+(-3) => 5 - 3

    乘法除法:是通过左移和右移 << >> 来实现

    # (2)运算

    (原码 反码 补码之间的转换 , 符号位不要动)

    正数: 原码 = 反码 = 补码

    负数: 原码 = 补码取反加1   给补码求原码

    负数: 补码 = 原码取反加1   给原码求补码

    例:计算-9+5的结果,先分别算处二进制

    -9

    000000001001 (原码)==>负数的原码前面都是0补位

    1111111110110 (反码)==>原码全部取反

    1111111110111 (补码)==>反码+1,如果都是1就进一位

    5

    0000000000101 (正数==>原码 = 反码 = 补码)

     

    1111111110111 -9的补码

    000000000101 5的补码

    1111111111100 (补码)====>两者补码相加得到新的补码

    补码==>取反 + 1 ==> 原码

    000000000011 (取反)

    000000000100 (加1==> 原码)得到 -4

    只保留符号位第一位,剩下中间的位用0填充即可

     

     

     

     

     

     

  • 相关阅读:
    用windows脚本实现文件下载
    pku1325 Machine Schedule
    中位数
    pku1468 Rectangles
    最小密度路径
    合并序列
    PowerDesigner(5)转载
    责任链模式
    PowerDesigner(3)转载
    解释器模式
  • 原文地址:https://www.cnblogs.com/lyj910313/p/10795615.html
Copyright © 2011-2022 走看看