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