c语言的整型数据类型

无符号整型数据类型主要有
           数据类型          字节大小      可存储的数据大小
unsigned char            1B                    0~255
unsigned  short            2B                 0~65535   
unsigned  int            4B           0~4,294,967,295
unsigned long            4B           0~4,294,967,295
unsigned long long            8B0~18,446,744,073,709,551,615
              ......            .......                      ......

B:字节(Byte),数据存储的最小单位

b:位(bit), 一字节有八位  1B=8b

无符号整型数据大小的计算方法:

以unsigned char 来举例:

unsigned char大小是一字节,有8b,8b全部用来存储数据

最小情况,八位全是 0:

00000000

十进制的值:0*2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 0*2^0 = 0

最大情况,八位全是1:

11111111

十进制的值:1*2^7 + 1*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 255

公式总结:2^8-1 = 255(这里的8,因为unsigned是一字节是八位,换成int,四字节,4*8 = 32 ,把8变成32 即可)

所以unsigned char 的范围是 0~255,其他类型用这种方法计算也可

接下来是有符号整型数据类型:

有符号整型数据类型
      数据类型          字节大小      可存储的数据大小
char            1B                        -128-127
short            2B                   - 32768~32767
int            4B            -2147483648 - 2147483647
long            4B            -2147483648 - 2147483647
long long            8B                      -2^63-2^63-1
              ......            .......                      ......

有符号整型数据大小的计算方法:

以char 来举例:

unsigned char大小是一字节,有8b,8b全部用来存储数据,有符号整型第一位是符号位:

第一位是1:则表示为负数,其余位数是数据:

1*******

第一位是0:则表示为正数,其余位数是数据:

0*******

所以数据位只有7位

最小情况:-2^7:-128

这里要注意,计算机中的数是以补码的方式进行存储,所以要把负数的源码转化为补码,但是正数为什么不用呢?因为正数的补码,反码就是原码本身。

首先变成反码:

符号位要保持不变,就是第一位不变,其他位取反:

末尾加1然后变成补码

最大情况:2^7-1 = 127

其他类型用这种方法计算也可

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值