美文网首页
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语言笔记——取值范围

    C语言笔记——取值范围 前言 这章主要是留作备用,作为补充知识的吧,不过常用的数据类型的取值范围还是得做一下了解,...

  • c语言有符号int取值范围

    结论,取值范围是-2^31~2^31-1(十六进制为0x80000000~0x7fffffff)。因为0既不是正数...

  • 深入理解计算机之第三晚

    整数的表示在C语言里,整数的取值范围主要是以下两张图:捕获.PNG捕获1.PNG同时可以看出,负数的范围比正数的范...

  • 在CMD中取随机数

    基本命令:%random% 取值范围:[0~65535] 自定义取值范围: 取值范围:[4,12] 取值范围:[4,5]

  • 取值范围

    有符号整形byte:sizeof(Byte) = 1 bytes;也就是8个二进制位;取值范围:-2^7 ~ 2^...

  • C语言指针/引用/取值

    指针是一个存储计算机内存地址的变量。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例...

  • signed char类型取值范围计算

    在C语言程序中,给定一个类型,如何计算这个类型变量的取值范围呢?比如有一个字符型变量定义如下: signed ch...

  • enum枚举的使用

    在实际应用中,有的变量只有几种可能取值。如人的性别只有两种可能取值,星期只有七种可能取值。在 C 语言中对这样取值...

  • Java字节码与Python字节码互转

    Java 字节(Byte) 取值范围 [-128,127]Python3 字节(bytes) 取值范围: [0,2...

  • Go语言里面的变量作用域问题

    变量的作用域,通常有包package范围、函数func范围、或者闭包closure范围, go语言毕竟比C语言复杂...

网友评论

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

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