408学习笔记-14-C-数据在内存中的存储

1、整数型存储

整数型存储就是所有整型家族里的数据类型的存储方式,也就是说包含了字符类型的存储(因为字符的''操作符的返回值是ASCII码值,故实际上存储的是整数)。



1.1、有符号整数

有符号整数包含charshortintlonglong long这几种类型的数据。

他们的二进制表示方法有三种:原码,反码,补码。

这三种表示方法均有符号位数值位两部分,符号位都是用0表示,用1表示,最高位的一位是被当做符号位,剩余的都是数值位。

原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码。
反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。
补码:反码+1就得到补码。

正整数的原、反、补码都相同;负整数的三种表示方法各不相同。

有符号整数在内存中统一以补码的形式存储,并且以补码形式参与任何操作。

以补码形式进行存储的原因:
在计算机系统中,有符号数值一律用补码来表示和存储。

原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。



1.2、有符号整数的特性

由于补码与数据类型限制精度的特性,产生了一种有意思的循环:
char类型为例子:

-128,-127…-2,-1,0,1,2…126,127,-128,-127…-2,-1,0,1,2…126,127,-128,-127…

总结为:阳极生阴,阴极生阳(有点模运算的感觉在里面)。



1.3、无符号整数

无符号整数包含unsigned charunsigned shortunsigned intunsigned longunsigned long long这几种类型的数据。

无符号数中没有原码-反码-补码的概念。

无符号整数的二进制表示形式只有一种,即直接将无符号整数翻译成对应的二进制形式,并且以这种形式在内存中存储。



1.4、无符号整数的特性

由于数据类型限制精度的特性,也产生了一种有意思的循环:
char类型为例子:

0,1,2…126,127,128…254,255,0,1,2…126,127,128…254,255,0,1,2…126,127,128




2、浮点数型存储

使用浮点数型存储的数据类型有:floatdoublelong double

浮点型数存储也就是IEEE 754标准。



根据IEEE 754标准,任何一个二进制浮点数V可以表示成下面的形式:

V = ( − 1 ) S ∗ M ∗ 2 E V=(-1)^S*M*2^E V=(1)SM2E

其中:

( − 1 ) S (-1)^S (1)S:表示符号位,当S=0,V为正数;当S=1,V为负数。

M M M:表示有效数字,M取值范围是大于等于1,小于2。

2 E 2^E

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值