整型数据类型

整数数据类型

  • char
  • short
  • int
  • long
  • long long
类型名称C语言中的关键词注释
字符型char 用于表示一个很小的整数
短整型short用于表示一个不怎么打的整数
整型int生活中一般的整数都可以表示
长整型long用于表示一个较大的整数
加长整型long long用于表示一个非常大的整数

为什么要定义不同的整型类型?

  1. 占用内存大小不一样
  2. 表示数据范围不一样

计算机是通过晶体管的开关状态来记录数据的,他们通常8个编为一组,我们称为字节,这种表示方法我们称为二进制。因此一个字节,8个晶体管可以拥有2的8次方个不同的状态,一个字节8个晶体管可以表示256个数值。

sizeof用来测量数据

sizeof可以用来测量数据大小,从而来决定如何使用整数类型,翻译成中文是什么东西的大小的意思,用来测量实体占用字节大小。

sizeof不仅可以测量数据类型,同样可以测量变量、常量

计算数值范围

记住sizeof的使用,记住数值范围的结论。晶体管的状态称为位。

  • char 1个字节 8位
  • short 2个字节 16位
  • int 4个字节 32位
  • long 4个字节 32位
  • long long 8个字节 64位

太多的位数不利于我们理解原理,可以把位数简化成3位,看看3个晶体管,能够表示多大的数值范围?

如果不考虑负数,可表示的数据范围:

假设位数为n,数据范围为0到2的n次方-1

负数怎么表示呢?

拿出一位作为符号位,符号位表示正数或负数。

补码表示法

3位2进制可以表示8个不同的数值,因此8为模

要让3回到0,可以让3-3,也可以让3 +(模 – 3)的差

3 ➡️ 0

3-3 3 +(模 – 3)

3 + (8 – 3)

3 + 5

因此-3的二进制用5的二进制101表示

用加法等效减法的二进制表示法称为补码表示法。

正数的补码就是其二进制本身

负数的补码:(模-正数)的二进制

2(求-2)

010 遇到1以前的数全部填0,1填1 遇到1之后的全部取反

100 (求-100)

0 1 1 0 0 1 0 0 1 0 0 1 1 1 0 0

补码表示法

通过最高位,区别了正数和负数

巧妙应用溢出,计算得到正确的结果

计算机只需要设计加法电路,简化了复杂程度。

整型数值范围结论

不想要最高位当作符号位

unsigned关键词用来表明最高位是不带有符号位的

总结:

  • 如何测量
  • 数据类型大小
  • 如何计算
  • 类型取值范围
赞(2)
未经允许不得转载:阿昌技术分享 » 整型数据类型