正數的補碼是原碼;

負數的補碼是反碼加一。

因此,問題就簡單了,如下圖所示:

C語言中如何求數值10,-10的8位補碼

補碼的存在是為了方便CPU進行計算的,當前幾乎所有主流的CPU中都是通過累加器和移位寄存器等進行運算的,不會特別設計硬件電路來進行減法運算,通過補碼,就可以將減法統一到加法中。

C語言中如何求數值10,-10的8位補碼

當然,對于用戶而言,求原碼、補碼都是CPU自己完成的,不需要用戶自己轉換。了解補碼會更好的幫助你了解CPU的計算原理。

貼一下源代碼和運行截圖。

#include

#define N 8 //這里你要求是8位

int main(int argc, const char * argv[]) {

int binary[8];//用于存放最后取得的補碼

int a=0;//要處理的數值

int a1=0;//保存a的值

int m=0;//用于存放臨時的數值

printf("請輸入要轉換成二進制補碼的數的值:n");

scanf("%d",&a);

a1=a;

if (a==0) {

for (int i=0; i

binary=0;

}

}else if (a

binary[0]=1;

a=-a;

//求原碼部分開始

for (int i=N-1; i>0; i--) {

binary=a%2;

a=a/2;

if (a

m=i;

break;

}

}//求源碼部分結束

printf("%d的原碼值為: ",a1);

for (int i=0; i

printf("%d",binary);

}

printf("n");

for (int i=m; i

if (binary==0) {

binary=1;

}

else binary=0;

}

binary[N-1]=binary[N-1]+1;

for (int i=N-1; i>0; i--) {

if (binary>1) {

binary=0;

binary[i-1]=binary[i-1]+1;

if (binary[i-1]

break;

}

}

}

//負數部分結束

}else{

binary[0]=0;

for (int i=N-1; i>0; i--) {

binary=a%2;

a=a/2;

if (a

m=i;

break;

}

}

for (int i=1; i

binary=0;

}

printf("%d的原碼值為: ",a1);

for (int i=0; i

printf("%d",binary);

}

printf("n");

}

printf("%d的補碼值為: ",a1);

for (int i=0; i

printf("%d",binary);

}

printf("n");

return 0;

}

C語言中如何求數值10,-10的8位補碼

C語言中如何求數值10,-10的8位補碼