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

    1 原码

    前提条件:用8位表示1个数。

    下面列出的是1、2、3、-1、-2、-3的原码:

    1:0000 0001

    2:0000 0010

    3:0000 0011

    -1:1000 0001

    -2:1000 0010

    -3:1000 0011

    2 反码

    对于正数,反码与原码相同;

    对于负数,反码等于原码取反,但符号位不变。

    下面列出的是1、2、3、-1、-2、-3的反码:

    1:0000 0001

    2:0000 0010

    3:0000 0011

    -1:1111 1110

    -2:1111 1101

    -3:1111 1100

    3 补码

    对于正数,补码与原码相同;

    对于负数,补码等于反码+1。

    下面列出的是1、2、3、-1、-2、-3的反码:

    1:0000 0001

    2:0000 0010

    3:0000 0011

    -1:1111 1111

    -2:1111 1110

    -3:1111 1101

    4 计算机存储方式

    测试程序如下:

    #include <stdio.h>
    
    int main(void)
    {
        int a = 1;
        int b = 2;
        int c = 3;
        int d = -1;
        int e = -2;
        int f = -3;
        printf("a = 0x%x,    %d
    ",a,a);
        printf("b = 0x%x,    %d
    ",b,b);
        printf("c = 0x%x,    %d
    ",c,c);
        printf("d = 0x%x,    %d
    ",d,d);
        printf("e = 0x%x,    %d
    ",e,e);
        printf("f = 0x%x,    %d
    ",f,f);
    }

    输出结果如下:

    a = 0x1,        1
    b = 0x2,        2
    c = 0x3,        3
    d = 0xffffffff, -1
    e = 0xfffffffe, -2
    f = 0xfffffffd, -3
    Press any key to continue

    根据输出结果可以知道,在计算机内,正负数都以补码的形式进行存储。

    5 补码存储的原因

    对于正数,原码与补码都一样,无所谓;

    对于负数,若用原码进行计算,会出现错误。

    例如(-1)+(-2)=(-3)

    原码与补码的计算结果如下如图所示:

    6 参考

    负数在计算机中怎样存储

    https://blog.csdn.net/littesss/article/details/70495810

  • 相关阅读:
    django学习笔记1
    排序多重排序
    06计算列
    填充日期序列
    行,列单元格
    读取excel文件
    监控文本
    天干地支纪年法
    Mysql基础
    JDBC基础
  • 原文地址:https://www.cnblogs.com/QQ2962269558/p/12864479.html
Copyright © 2011-2022 走看看