数据的存储(整型)-C语言

本文解析了计算机中数值表示的三种形式——原码、反码和补码,并通过代码实例说明了它们在正数、无符号数和负数截断提升时的转换。重点强调了补码在存储和运算中的普遍使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原码:直接将数字按照正负数的形式表示成二进制即可;
反码:原码符号位不变,其他位按位取反即可;
补码:反码+1得到补码;

在计算机系统中,数值一律用补码来表示和存储。

#include <stdio.h>
int main()
{
	//对于正数和无符号来说,原码=补码=反码
	char a = -1;                     //截断后  整型提升时补1
	printf("%u %d %x\n", a, a, a);   //%u输出补码  %d输出原码
	unsigned char b = -1;            //截断后  整型提升时补0
	printf("%u %d %x\n", b, b, b);
	char d = -128;                   //截断后  整型提升时补1
	printf("%u %d %x\n", d, d, d);
	char e = 128;                    //截断后  整型提升时补1
	printf("%u %d %x\n", e, e, e);
	unsigned char f = 128;           //截断后  整形提升时补0
	printf("%u %d %x\n", f, f, f);
}
    -1
原码:10000000 00000000 00000000 00000001
反码:11111111 11111111 11111111 11111110
补码:11111111 11111111 11111111 11111111
截取:                           11111111   ---存储
     11111111 11111111 11111111 11111111   ---整型提升补1
     00000000 00000000 00000000 11111111   ---无符号整形提升补0

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脆订壳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值