A. c語言,輸出補碼

求補碼的函數可以參考下面的代碼,我們知道,在內存中,正數的補碼等於他本身,所以直接返回a。負數的補碼正是它在內存中的存在形式,這是我們定義一個unsigned int型的數值去用它來賦值,取得的就是他的補碼的二進制形式。為了驗證,我另外編寫了一個函數,用來輸出二進制,請參考。

unsigned int buma(int a)//用來求得補碼
{
if(a>=0)
return a;
else
{
unsigned int temp=a;
return temp;
}
}

void twoprint(unsigned int a)//用來輸出二進制
{
int temp=a%2;
if(a/2==0)
{
cout<<a<<" ";return ;
}
twoprint(a/2);//這里採用了遞歸調用的方法
cout<<temp<<" ";
}

B. 這道C語言的補碼怎麼求

最高位是符號位,1表示負,0表示正;後面7位是數據位,那7位只有末尾是1,所以是1,而最高位1表示負,那不是-1嗎?如果再問為什麼,那就沒辦法答了。

C. C語言求二進制補碼 源代碼

輸入任意整數,輸出32位的補碼。
輸入其他,結束程序。

#include<stdio.h>
int main()
{
int i,num=0;
char s[33]={0};
while(1==scanf("%d",&num)){
for(i=0;i<32;i++){
s[i]= (0x01 & (num>>(31-i))) ? '1' : '0' ;
}
printf("%s\n",s);
}
return 0;
}

D. c語言 補碼程序

這是求第i位的補碼是0還是1的意思
x & 1就是求x和1相與,<<(15-i)就是左移動15-i位,這么說應該明白了吧

E. 補碼計算的問題,C語言的初學者

補碼的運算:
一、補碼加法
[X+Y]補 = [X]補 + [Y]補
例:X=+0110011,Y=-0101001,求[X+Y]補
[X]補=00110011 [Y]補=11010111
[X+Y]補 = [X]補 + [Y]補 = 00110011+11010111=00001010
註:因為計算機中運算器的位長是固定的,上述運算中產生的最高位進位將丟掉,所以結果不是100001010,而是00001010。
二、補碼減法
[X-Y]補 = [X]補 - [Y]補 = [X]補 + [-Y]補
其中[-Y]補稱為負補,求負補的方法是:負數的絕對值的原碼所有位按位取反;然後整個數加1。
例:1+(-1) [十進制]
1的原碼00000001 轉換成補碼:00000001
-1的原碼10000001 轉換成補碼:11111111
1+(-1)=0
00000001+11111111=00000000
00000000轉換成十進制為0
0=0所以運算正確。
三、補碼乘法
設被乘數【X】補=X0.X1X2……Xn-1,乘數【Y】補=Y0.Y1Y2……Yn-1,
【X*Y】補=【X】補×【Y】補,即乘數(被乘數)相乘的補碼等於補碼的相乘。

F. c語言求補碼

發明
補碼
的目的


硬體「加法器」來做減法運算。
換句話說,減內一個數,就是加它容的
補碼。
正數的補碼就是原數,就是自己。
負數的補碼是它的反碼加1。
反碼,就是
符號位不變,其它位
是1的變0,是0的變1。
變完後,最低位
加1,成了補碼。

G. 求數的補碼 c語言中

簡單的位運算就可以了
#include <stdio.h>

void printBin(int num){
int i,k=31;
for(i=0;i<32;i++){
printf("%d",(num>>k)&1);//移位並輸出
k--;
}
printf("\n");
}

int main(int argc, char* argv[])
{
int num;
printf("Please input a number, I will tell you what it really is:");
scanf("%d",&num);
printf("It is binary display is:");
printBin(num);
return 0;
}

H. C語言中,如何求一個數的二進制補碼舉個例子,謝謝!

正數的補碼是其原值
例如佔一個位元組的10,二進制為0 000 1010, 第一位0表示+,
補碼也是0 000 1010
負數的話-10, 二進制為1 000 1010, 第一位1 表示-,
補碼求法為 :符號位不變,其餘取反再加1
1 000 1010 取反 1 111 0101
再加1: 1 111 0110

I. 非常著急的求C語言高手編寫一個求補碼的程序。

|

//#include"stdafx.h"//vc++6.0加上這一行.
#include"stdio.h"
#include"stdlib.h"
intmain(void){
inta,b,x;
unsignedc=1<<sizeof(int)*8-1,f;
while(1){
printf("Inputa&b(inta<=b)... ");
if(scanf("%d%d",&a,&b),a<=b)break;
printf("Error,redo:");
}
for(;a<=b;a++){
printf("%d, ",a);
for(x=a>=0?a:a-1,f=c;f;f>>=1)
printf("%d",x&f||0);
printf(",");
for(x=a,f=c;f;f>>=1)
printf("%d",x&f||0);
printf(",%X ",a);
}
return0;
}

J. C語言的補碼是怎樣求出來的

正數是取原碼,負數是對應正數逐位取反再加一
比如19,原碼用8位二進制是00010011,那麼它的補碼、反碼都是00010011。
而對於-19,因為19的8 位原碼是00010011,逐位取反得
11101100,再加1,11101101
所以-19的原碼是10010011,反碼是11101100,補碼是11101101