#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】
这是一些有关补码的知识。