美文网首页
C语言笔记——取值范围

C语言笔记——取值范围

作者: syc_poker | 来源:发表于2018-03-13 14:00 被阅读0次

    C语言笔记——取值范围

    前言

    这章主要是留作备用,作为补充知识的吧,不过常用的数据类型的取值范围还是得做一下了解,并且记住的。
    这里得先明确几个个概念:

    CPU能读懂的最小单位是:比特位,单位:bit,简写为:b
    内存中最小的寻址单位为:字节,单位:Byte,简写为:B
    有这样一个关系:1 Byte == 1 bit

    那么一个字节的大小能表示多大的数呢?
    11111111b = FFh = 255
    所以我们可以看出,在无符号位的情况下,一个字节就能表示 0 ~ 255 的数。

    符号位

    通常,在有符号情况下,也就是变量类型之前有 signed 这样的情况下,8 个比特位的第一位为符号位。
    关系为:如果符号位是 0 ,那么这就是一个正数;如果符号位为 1 ,那么这就是一个负数。
    那么们举个栗子:
    一个 int 型的变量,默认是 signed int 并且是 4 个字节的,那么就占有 8 * 4 = 32 个比特位,同时他第一位是符号位,那么就只有 31 个比特位是表示数值的,表示的大小就是 -2的31次方~2的31次方

    补码

    这里引入一个补码的概念,虽然我并不知道这个有啥用,但是我看教程都讲了,那就也写一下吧。

    补码的算法

    • 如果是一个正数的补码
      • 那他的补码就是这个正数的二进制形式
    • 如果是一个负数的补码
      • 那就先取这个负数的绝对值
      • 然后将绝对值换为二进制形式
      • 将二进制按位取反得到一个二进制数
      • 将得到的二进制数加 1 就得到了这个负数的补码

    基本数据类型的取值范围

    数据类型 字节数 取值范围
    char 1 -128 ~ 127
    unsigned char 1 0 ~ 255
    short 2 -32768 ~ 32767
    unsigned short 2 0 ~ 65535
    int 4 -2147483648 ~ 2147483647
    unsigned int 4 0 ~ 4294967295
    long 4 -2147483648 ~ 2147483647
    unsigned long 4 0 ~ 4294967295
    long long 8 -9223372036854775808 ~ 9223372036854775807
    unsigned long long 8 0 ~ 18446744073709551615
    float 4 1.17549*10^(-38) ~ 3.40282*10^38
    double 8 2.22507*10^(-308) ~ 1.79769*10^308
    long double 12 1.2*10^(-4932) ~ 1.2*10^4932

    最后一组数据不准确,只做参考,在上述表中, ^ 为乘方符号

    相关文章

      网友评论

          本文标题:C语言笔记——取值范围

          本文链接:https://www.haomeiwen.com/subject/vfkefftx.html