C语言学习06

类型的意义:

1. 使用这个类型开辟内存空间的大小(大小决定了使用范围)。
2. 如何看待内存空间的视角。(float和int都是4字节,但是在内存中存储的方式不同)

数据类型

整型家族:

浮点数家族:

构造类型:

指针类型:

空类型:

void 表示空类型(无类型)
通常应用于函数的返回类型(无返回值)、函数的参数(添加在无参数传递的函数定义里,不允许参数传递)、指针类型

整形在内存中的存储

1.有符号数

        正数:原码、反码、补码相同。
        负数:原码、反码、补码不同,要进行计算。

2.无符号数

        原码、反码、补码相同。

对于整形来说:数据存放内存中其实存放的是补码。

加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程
是相同的,不需要额外的硬件电路。

大端小端-大小端字节序

大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址
中;
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中。

整型在内存中其补码是怎么存储的

1.有符号存储(8bit为例)

8bit补码一共有256种可能性,当第8位(符号位)为0时为正数(原反补一致)直接二进制转十进制,范围是0-127(0111_1111)。当符号位为1时是负数(需要先将补码换成原码),范围是-1(1111_1111)-(-128)(1000_0000),其中-127(1000_0001),所以8bit内存存贮的整形范围是-128-127。其他整型类似。

int main()
{
    char a=128;//128和-128只有符号位不同(四字节存储),128转补码截断后的8位补码与-128相同
    printf("%d",a);//因为a是有符号数,由上行相同补码整型提升至相同四字节补码,
                   //所以,打印有符号位结果是-128 ,无符号四字节补码直接输出,
                   //两者(128和-128)结果都是4294967168
    return 0;
}

2.无符号存储(8bit为例)

8bit补码一共有256种可能性,无符号整形的原反补一致,所补码二进制直接转十进制。范围为0(0000_0000)-255(1111_1111)。

使用短整型注意整型提升和截断

赋值需要整型原码转补码再截断。

使用时几乎都要整型提升,然后按照提升规则将提升后的补码转原码使用。

其他

多字节数据类型的首地址都是从低地址开始算。

指针类型的转换不会对存入其中的地址进行改变,改变的从这个地址开始解引用的方式(访问空间和翻译方式),可以通过指针的类型转换拿到变量首字节存储的值。

%d-打印十进制的有符号数字
%u-打印十进制的无符号数字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值