计算机底层数据的处理方式

编程语言的类型转换在汇编后变为补码二进制,类型信息消失。底层硬件操作二进制数据,读取时根据类型转换,转换过程中涉及截断、符号扩展和零扩展。

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

    编程语言是怎么实现类型转换的,而计算机底层又是怎样处理各种类型数据的呢,好吧,源码说明一切。

    code.c

int test()
{
	unsigned char a=129;
	char b=130;
	char c=a;
	int h=a;
	char d=-2;
	unsigned char e=d;
	int i=d;
	int j=a+d;
	int k=-3;
	int l=257;
	char m=k;
	char n=l;
	unsigned char p=k;
	unsigned char q=l;
}

    将之汇编为code.s汇编代码:

    code.s

	subl	$32, %esp
	movb	$-127, -1(%ebp)                     //立即数都转换为相应类型所占位数下的补码数据
	movb	$-126, -2(%ebp)
	movb	-1(%ebp), %al
	movb	%al, -3(%ebp)
	movzbl	-1(%ebp), %eax
	movl	%eax, -8(%ebp)
	movb	$-2, -9(%ebp)
	movb	-9(%ebp), %al
	movb	%al, -10(%ebp)
	movsbl	-9(%ebp), %eax
	movl	%eax, -16(%ebp)
	movzbl	-1(%ebp), %edx
	movsbl	-9(%ebp), %eax
	addl	%edx, %eax
	movl	%eax, -20(%ebp)
	movl	$-3, -24(%ebp)
	movl	$257, -28(%ebp)
	movl	-24(%ebp), %eax
	movb	%al, -29(%ebp)
	movl	-28(%ebp), %eax
	movb	%al, -30(%ebp)
	movl	-24(%ebp), %eax
	m
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值