重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
正整数的补码就是它本身
创新互联专业为企业提供大冶网站建设、大冶做网站、大冶网站设计、大冶网站制作等企业网站建设、网页设计与制作、大冶企业网站模板建站服务,十多年大冶做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
负整数的补码就是它在内存中的存储值
#includestdio.h
void main()
{
int n;
scanf("%d", n);
printf("n的补码:%x\n", n);/* 16进制和2进制等价 */
}
如果你的任意整数要求1000位数或者更大,那就要用数组来存储,并按照补码规则来计算:负数的补码就是对反码加一,而正数不变。
首先,下面的是主函数,上面的是所调用的函数。int n; 就是定义了一个整数n,他是一个变量。下面的一名scanf("%d",n),就是通过键盘输入给n赋值,因为第一步你只定义了他,他还没有值,第二步就是给他赋值。并且这种方式是通过键盘输入的方式给n赋值。之后调用fun函数,fun(n)就是把刚从键盘上接收的n值一并的带到函数中。之后看void函数,他就是fun函数,把n的值传给i,那么i就有了值,下面的就判断i的值,如果i大于1,再次执行fun函数,此时的fun函数所自带的参数是i/2的商,如果以21为例的话,那么就是10,调用fun函数,i的值就是10,再判断i的值,此是还是大于1,接着把10/2的值传给i,再判断,一直到i不大于1为止,就输出结果,不知道是否明白
0100000是八进制数。即二进制数:1000 0000 0000 0000。
z=value0100000;//意义就是取value的最高位。
if(z==0100000)//如果最高位是1,即为负数,需要求补
z=~value+1;//求补,即取反+1
else
z=value;
求补码的函数可以参考下面的代码,我们知道,在内存中,正数的补码等于他本身,所以直接返回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)
{
couta" ";return ;
}
twoprint(a/2);//这里采用了递归调用的方法
couttemp" ";
}