将10进制负数转化为32位二进制补码形式(表示出int类型负数在计算机中的存储形式)

本文介绍如何将C语言中的int类型负数转化为32位二进制补码形式,重点在于理解负数在计算机中的存储方式,通过将负数的绝对值作为无符号整型输入,扩大表示负数的范围。
摘要由CSDN通过智能技术生成

我们知道,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);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值