我们知道,int 类型的数为有符号数,在计算机中占据4个字节(以32位2进制的形式存储)。
下面这段代码将负数转化为它在计算机中的存储形式,操作平台为VS。
注意:用int类型的负数是有范围的,int类型能表示的负数为:-2^31 ~ -1
但是在这段代码中,为了扩大范围,我们直接输入该负数的绝对值,将它声明为unsigned int(无符号整型)变量,扩宽了能表示的负数范围( -2^32+1 ~ -1)。
输出该负数的32位2进制表达形式,即int类型负数在计算机中的存储形式。
#include<stdio.h>
#include<stdlib.h>
int main()
{
system("color F0");
void f(unsigned int n);
unsigned int a;
while (1)
{
printf("该负数的绝对值:");
scanf_s("%u", &a);
a = (2147483648-1)*2 - a+2;
printf("该负数的二进制值为:");
f(a);
fflush(stdin);
printf("\n");
}
return 0;
}
void f(unsigned int n)
{
if (n)
f(n / 2);
else
return;
printf("%u", n % 2);
}