C语言之补码详细解释

#include <stdio.h>
//打印一个数据的二进制
//补码 -1 0000 0001(原码1)
//接着取反1111 1110 
//然后加(1) 1111 1111
//就得到-1
//求补码 -128 
//先找到128 为1000 0000
//取反 0111 1111
//加1 1111 1111


void disBin(char ch)

{
    int i = 8;
    while(i--)
    {
          if((1<<i)&ch)
              printf("1");
          else
              printf("0");
          if(i%4 == 0)
    {
              printf("");
}

}
    putchar(10);
}

int main()
{
    char a = 0;
    disBin(a);
    char b = 1;
    disBin(b);
    char c = 2;
    disBin(c);
    char d = 127;
    disBin(d);
    char e = -128;
    disBin(e);
    char f = -2;
    disBin(f);
    char g = -1;
    disBin(g);
    disBin(f + b);
    return 0;
}

以求-2为例
首先先把2的二进制数表示出来0000 0010
接着取反 1111 1101
最后加1 变成1111 1110
如果由二进制转十进制
例如1111 1101的原码十进制
先取反0000 0010
加1变成 0000 0011 因此2的一次方+2的零次方=3

以上这是补码计算方法

下面是有关补码的具体解释:
在这里插入图片描述
补码的含义与时钟的模很相似,10小时-4和+8最终所表示的时间是一个意思,那么在补码中也可以用模的想法去思考
8位二进制系统模为2的八次方。此时例如计算1-2,而计算机运用加法,也就是1+2的模,而2的八次方-2也就是254,可以理解为256-1-1
此时256的二进制为10000 0000,减去1为01111 1111 再减去1为01111 1110
取八位也就是1111 1110也就是-2
接下来1+(-2)就是0000 0001+1111 1110=1111 1111

以上就是有关补码的具体解释
在这里插入图片描述
//0的补码是0是正确的
//补码范围【-128 127】

这是一些有关补码的知识。

发布了17 篇原创文章 · 获赞 0 · 访问量 911

猜你喜欢

转载自blog.csdn.net/Sxk181110527/article/details/105537415
今日推荐