给出一个十进制数,可以是整数,也可以是小数。经过数据处理之后,输出这个数的原码,反码,补码,和移码的表示方法。其中整数部分和小数部分分别用32位机器数表示。
#include "stdio.h"
#include <stdlib.h>
#include <string.h>
#define TTWO 32
#define TONE 31
void integertrueform(int x,int map[])
{
if(x>=0) map[TONE]=0;
if(x<0) {
map[TONE]=1; x=-x;}
int i=1;
while(x&&(i-TTWO))
{
map[i-1]=x%2;
i++;
x=x/2;
}
}
void decimaltrueform(double x,int map[])
{
if(x>=0) map[TONE]=0;
if(x<0) {
map[TONE]=1; x=-x;}
int i=TONE;
while(x!=0&&i)
{
x=x*2;
if(x>=1) {
map[i-1]=1;x--;}
else map[i-1]=0;
i--;
}
}
void ptrueform(int map[])
{
int i=TTWO;
while(i)
{
printf("%d",map[i-1]);
i--;
}
}
int onescomplement(int map[])
{
int i