字节长度与数据溢出

字节长度就是一个变量所占的内存空间的大小。数据有着不同的数据类型,不同的数据类型会分配不同的空间大小。在c语言中有字节,半字,字三种存储数据的单位,其关系是

1个字=4个字节=32位,一个半字=2两个字节=16位,一个字节=8位。

int                  4 字节                      char                 1字节

short             2字节                       double             8字节

long              4字节                        float                 4字节

任何类型的指针其字节长度都为4,因为指针保存的是地址,地址的长度是固定的,由操作系统的位数决定。

如:int  *a[7]                28字节

        int  (*a)[7]              4字节

取值范围:任何一个数据类型都有其取值范围。例如我们推出char的取值范围。

char 是一个字节长度,所以其二进制数就是8位。我们知道在二进制中     

    正数的原码=正数补码

    负数的补码=原码取反+1

    负数的原码=补码取反+1

   计算机中保存的是补码

首先是无符号的char型                              unsigned      char 

最小值          0 0 0 0 0 0 0 0                                            0

最大值          1 1 1 1 1 1 1 1                                          255

有符号char型                                              signed          char

正数的最小值                 0 0 0 0 0 0 0 0                                                0

正数的最小值                 0 1 1 1 1 1 1 1                                               127

负数的最小值                 1 0 0 0 0 0 0 0                                              -128

负数的最大值                 1 1 1 1 1 1 1 1                                               -1 

所以无符号的char型取值范围为0-255,有符号的char型取值范围为-128-127.


在计算机中经常会出现数据溢出的情况,例如 char ch=-128;ch =ch-1;其运算结果为127,如果是127+1;其结果就是-128   

其运算过程为:

-128的二进制是                       1 0 0 0 0 0 0 0

-1的二进制是                           1 1 1 1 1 1 1 1

结果是                                      0 1 1 1 1 1 1 1   =127

在计算机中只进行加法运算所以-128-1就是-128+(-1),所以其结果为127。  同理127+1的结果是-128。                                                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值