码迷,mamicode.com
首页 > 其他好文 > 详细

原码、反码与补码

时间:2020-05-10 19:17:03      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:存储   net   style   info   图片   color   符号位   方式   span   

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\n",a,a);
    printf("b = 0x%x,    %d\n",b,b);
    printf("c = 0x%x,    %d\n",c,c);
    printf("d = 0x%x,    %d\n",d,d);
    printf("e = 0x%x,    %d\n",e,e);
    printf("f = 0x%x,    %d\n",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

原码、反码与补码

标签:存储   net   style   info   图片   color   符号位   方式   span   

原文地址:https://www.cnblogs.com/QQ2962269558/p/12864479.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!