#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
char stry[33] = { 0 };
char strf[33] = { 0 };
char strb[33] = { 0 };
//补码
void bcode(int num)
{
unsigned int data = 1 << 31;
for (int i = 1; i < 32; i++)
{
if (num&data)
{
strb[i - 1] = '1';
}
else
{
strb[i - 1] = '0';
}
num <<= 1;
}
}
//反码
void fcode(int num)
{
unsigned int data = 1 << 31;
if (num < 0)
{
num = num - 1;
}
for (int i = 1; i < 32; i++)
{
if (num&data)
{
strb[i - 1] = '1';
}
else
{
strb[i - 1] = '0';
}
num <<= 1;
}
}
//原码
void ycode(int num)
{
unsigned int data = 1 << 31;
if (num < 0)
{
//num = num - 1;
num = ~num + 1;
num = num | data; //处理符号位
}
for (int i = 1; i < 32; i++)
{
if (num&data)
{
strb[i - 1] = '1';
}
else
{
strb[i - 1] = '0';
}
num <<= 1;
}
}
void main()
{
int num;
scanf("%d\n", &num);
bcode(num);
printf("%s\n", strb);
fcode(num);
printf("%s\n", strf);
ycode(num);
printf("%s", ycode);
system("pause");
}
05--原码补码反码的转换
最新推荐文章于 2022-05-27 11:02:01 发布