输入一个十进制数,用C语言输出其原码补码反码移码(十进制数可以为正负数整数小数)

给出一个十进制数,可以是整数,也可以是小数。经过数据处理之后,输出这个数的原码,反码,补码,和移码的表示方法。其中整数部分和小数部分分别用32位机器数表示。再输出这个数的IEEE754单精度浮点数。

#include<stdio.h>
#include<math.h>
void main()
{
int m,n,a[10],i=0,y[100],f[100],b[100],j,k;
printf("请输入一个整数:");
scanf("%d",&n);
m=abs(n);
while (m!=0)
{
a[i]=m%2;
m=m/2;
i=i+1;
}
if (n>=0)
{
for(j=0;j<i;j++) y[j]=a[j];
if ((j+1)%8!=0) for(;(j+1)%8!=0;j++) y[j]=0;
y[j]=0;
for(k=0;k<=j;k++)
{
f[k]=y[k];
b[k]=y[k];
}
}
else
{
int w=0;
for(j=0;j<i;j++) y[j]=a[j];
if ((j+1)%8!=0) for(;(j+1)%8!=0;j++) y[j]=0;y[j]=1;
for(k=0;k<j;k++) if(y[k]) f[k]=0;else f[k]=1;f[k]=1;
for( k=0;k<j;k++) {if (k==0)b[k]=f[k]+1;else b[k]=f[k]+w;if (b[k]==2){b[k]=0;w=1;}else w=0;}b[k]=1;
}
printf("原码:");for(k=j;k>=0;k--)printf("%d",y[k]);printf("\n");
printf("反码:");for(k=j;k>=0;k--)printf("%d",f[k]);printf("\n");
printf("补码:");for(k=j;k>=0;k--)printf("%d",b[k]);printf("\n");
}
温馨提示:内容为网友见解,仅供参考
无其他回答

输入一个十进制数,用C语言输出其原码补码反码移码(十进制数可以为正负数...
printf("补码:");for(k=j;k>=0;k--)printf("%d",b[k]);printf("\\n");}

求一个十进制数的 (原码 补码 反码 移码 ) 用一个字节表示??
就是用 8 位二进制数表示。8 位二进制数的原码,可以表示十进制数:-127~+127。 如 3 的原码:0000 0011。8 位二进制数的反码,可以表示十进制数:-127~+127。 如 3 的反码:0000 0011。8 位二进制数的补码,可以表示十进制数:-128~+127。 如 3 的补码:0000 0011。8 位二...

原码、补码、反码、移码的转换
移码:11011 \/\/原数+10000 -1011 原码:11011 反码:10100 \/\/负数时,反码为原码取反 补码:10101 \/\/负数时,补码为原码取反+1 移码:00101 \/\/原数+10000 0.1101 原码:0.1101 反码:0.1101 \/\/正数时,反码=原码 补码:0.1101 \/\/正数时,补码=原码 移码:1.1101 \/\/原数+...

【C语言】原码、反码、移码、补码 总称是什么?
二进制数的编码

求十进制数123的原码表示,反码表示,补码表示和移码表示
x = +123d = +111 1011b 若字长8位:[x]原 =[x]反 =[x]补 =0111 1011b 将补码符号位取反,得移码:[x]移 =1111 1011b

求十进制数-113的原码表示,反码表示,补码表示和移码表示
2 113 2 56 1 2 28 0 2 14 0 2 7 0 2 3 1 2 1 1 2 0 1 所以原码为1110001,加上符号位 11110001 反码10001110,原码除符号位,其余按位取反,符号位不变。补码10001111,反码加1。移码00001111,补码的符号位取反。建议这类问题下次去...

原码,反码,补码和移码: 原码:1001101,反码,补码,移码各是多少?_百度知 ...
解:首位数字表示正负不做变(1为负数,0为正数)反码:1110010(正数反码等于原数,题中为负数,则除首位数对应取反)补码:1110011(得出反码数基础上末位加一)移码:0110011(补码符号位第一位数字取反)反码是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,...

原码,补码,反码,移码的表示方法怎么算?
原码就是把原来的数化成2进制 比如10的原码就是00001010,+10的原码是00001010,最高位的0代表 这个数是正数(最高位就是符号位). -10的原码就是10001010,最高位的1代表这个数是负数 +10的原码是00001010,那他的反码,补码都和原码相同 也是00001010,原因是正数的原 反 补码相同 -10的原码是10001010,...

数据的表示:原码、反码、补码、移码以及浮点数的运算
通过短除法,如将[公式]转换为二进制,其过程为[公式]。比如二进制数[公式]转八进制和十六进制,分别得到[公式]和[公式]。在计算机中,所有数据最终以二进制存储。但为了实现减法,引入了原码、反码和补码的概念。原码用最高位表示符号,如[公式]表示正数,[公式]表示负数。如[公式]的原码和[公式]...

原码、反码、补码之间怎么快速转换,大神带你轻松学
[-0]补=0000000。计算机采用这些编码方法,便于运算,提高运算速度。原码、反码、补码之间是层层递进的,需要掌握十进制的二进制表示、符号位表示及它们之间的关系。总结:正数的原码、补码、反码相同;负数的反码,符号位不变,原码数值取反;负数的补码,符号位不变,原码转换成反码,反码末位加1。

相似回答