求一个C语言程序使输入一个数能显示出计算出它的原码和补码并显示出来(在VC6.0上运行)
发布网友
发布时间:2023-05-18 09:11
我来回答
共4个回答
热心网友
时间:2023-09-29 02:09
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<conio.h>
void convert(int num);
void oppose(int n);
int a[16];
void main(void)
{
int num,jdz;
char ans;
while(1)
{
printf("请输入任意一个十进制整数: ");
scanf("%d",&num);
printf("\n");
printf("其绝对值为: ");
jdz=abs(num);
printf("%d\n\n",jdz);
printf("其原码为: \n");
convert(jdz);
printf("\n\n");
if(num>=0)
{
printf("其补码为: \n");
convert(jdz);
printf("\n\n");
}
else
{
printf("其补码为: \n");
oppose(a[16]);
printf("\n\n");
}
printf("按回车键继续或按ESC键结束程序!!!\n");
ans=getch();
while(ans!=13 && ans!=27)
{
ans=getch();
}
if(ans==13) system("cls");
if(ans==27)
{
system("cls");
printf("谢谢使用!!!\n");
break;
}
}
}
void convert(int num) /*定义转化为原码的函数*/
{
int i;
a[0]=num%2;
for(i=1;i<=15;i++)
{
a[i]=(num/2)%2;
num/=2;
}
for(i=15;i>=0;i--)
printf("%2d",a[i]);
}
void oppose(int n) /*定义转化为补码的函数*/
{
int i;
for(i=0;i<=15;i++)
{
switch(a[i])
{
case 1:a[i]=0;break;
case 0:a[i]=1;break;
}
}
for(i=0;i<=15;i++)
{
a[i]++;
if(a[i]>1) a[i]=0;
else break;
}
for(i=15;i>=0;i--)
printf("%2d",a[i]);
}
热心网友
时间:2023-09-29 02:09
问题要求也不难,打那么多字,干嘛?
源代码如下即可。
截图包括:输入正数、负数的运行结果。
热心网友
时间:2023-09-29 02:10
#include<stdio.h>
//#include <stdlib.h>
//#include <math.h>
void BtyeToBit(bool *out,char in)
{
printf(" buma:");
for(int i=0;i<8;i++)
{
out[i]=(in<<(i%8))&128;
printf("%d\t",out[i]);
}
printf("\nyuanma:");
if(out[0]==1)
{
for(int n=1;n<8;n++)
out[n]=out[n]^1;
if(out[7]==1)
{
out[7]=0;
if(out[6]==1)
{
out[6]=0;
if(out[5]==1)
{
out[5]=0;
if(out[4]==1)
{
out[4]=0;
if(out[3]==1)
{
out[3]=0;
if(out[2]==1)
{
out[2]=0;
if(out[1]==1)
{
out[1]=0;
out[0]=0;
}
else
out[1]=1;
}
else
out[2]=1;
}
else
out[3]=1;
}
else
out[4]=1;
}
else
out[5]=1;
}
else
out[6]=1;
}
else
out[7]=1;
for(int m=0;m<8;m++)
printf("%d\t",out[m]);
}
else
{
for(int j=0;j<8;j++)
printf("%d\t",out[j]);
}
}
void main()
{
bool buma[8];
char yuanma;
scanf("%d",&yuanma);
BtyeToBit(buma,yuanma);
}
可以节省内存。。
热心网友
时间:2023-09-29 02:11
求正数的原码、补码
#include<stdio.h>
int main()
{
int n,t,i=0,a[100],j=0,k;
printf("请输入一个数:\n");
scanf("%d",&n);
t=n;
while(t!=0)
{
a[i]=t%2;
t=t/2;
i++;
}
j=i;
printf("该数的原码是:\n");
while(i>0)
{
printf("%d",a[i-1]);
i--;
}
printf("\n");
printf("该数的补码是:\n");//正数的补码跟原码相同
while(j>0)
{
printf("%d",a[j-1]);
j--;
}
printf("\n");
}