有无符号数的存储

本文介绍了编程中不同数据类型的有符号和无符号特性,以及二进制存储数值的方式,强调了首位对于正负值判断的重要性。以short和char为例,详细解释了补码、反码和原码的转换过程。此外,还探讨了大小端字节序的概念,以int类型的变量为例展示了小端和大端存储的区别。

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

一、整形函数:

char:不确定有无符号,取决于编译器的实现。

short、int、long:

                signed ~        //有符号的

                unsigned ~         //无符号的

//有正负的数据可存储在有符号的变量中

//无符号的数据如:年龄,可存储于无符号的变量中

二、二进制存储数值

1.如果是有符号的数据,首位是决定正负值的。

首位为0则为正值,首位为1则为负值。

2.如果为无符号的数据,首位也是数据位。

以short为例,short类型函数具有2个字节,16个比特位。

以-1为例,则应该表示为:1000000000000001.

以char函数为例,char函数具有1个字节,8个比特位。

其中存储的直接是补码,要先翻译为反码,再进一步变为原码得出数值。

例如:char存储的二进制代码是1111 1111(补码),-1翻译为反码,即其反码为:1111 1110,其原码是,首位决定正负的数字不变,其他值改变,其原码为:1000 0001,读值即为-1.

特殊情况:负数用无符号unsigned输出时,会将原负数的补码当做原码输出为十进制。

例如

unsigned char c输出时,直接将其补码也就是1111 1111(二进制)算成255(十进制)

三、大小端字节序存储

int main()
{
    int a = 0x11223344;    //16进制写法
    return 0;
}

vscode2019在地址中的存储是小端存储:44332211

若使用大端存储则为:11223344

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值