精华内容
下载资源
问答
  • int类型变量的取值范围

    千次阅读 2020-11-06 15:04:22
    int类型变量的取值范围?前言 前言 在学C语言的时候应该都会先了解各种基本数据类型的初值和它们的取值范围,有些人可能会不太重视这块内容,其实很重要,很多大公司面试的过程中都会问到int的取值范围,溢出之后会...

    int类型变量的取值范围?


    前言

    在学C语言的时候应该都会先了解各种基本数据类型的初值和它们的取值范围,有些人可能会不太重视这块内容,其实很重要,很多大公司面试的过程中都会问到int的取值范围,溢出之后会怎么样等问题。
    在写程序的时候有时候我们将一个很大的int型的数相加一个数,就会发现结果不对。这是为什么呢?
    因为这个数超过了int型的取值范围。
    C语言中int的取值范围为:-2147483648 ~2147483647
    解释如下:int类型在C语言中占4个字节,即32个二进制位。当表示正数时,最高位为符号位(符号位为0),最大的正数是 0111 1111 1111 1111 1111 1111 1111 1111 即2^31 -1 = 2147483647当表示负数时,最高位为符号位(符号位为1),最小的负数是 1000 0000 0000 0000 0000 0000 0000 0000 而在计算机中是以补码的形式存储的,C语言规定 1000 0000 0000 0000 0000 0000 0000 0000 的补码为-2147483648所以C语言中int的取值范围为:-2147483648 ~ 2147483647

    我们也可以用程序来查看int型的最大最小值。

    #include<stdio.h>
    #include<limits.h>
    int main(){
    int min = INT_MIN;
    int max = INT_MAX;
    printf("%d %d\n",max,min);
    }
    
    展开全文
  • int类型取值范围

    万次阅读 2015-06-25 14:59:06
    要想判断int类型取值范围,首先要知道: 1.int类型所占字节数; 2.整型变量数据在内存中以什么方式存储;获得int型所占字节数#include int main() { printf("%d\n",sizeof(int)); return 0; }结果: 得到int...

    要想判断int类型的取值范围,首先要知道:
    1.int类型所占字节数;
    2.整型变量数据在内存中以什么方式存储;

    获得int型所占字节数

    #include<stdio.h>
    int main()
    {
        printf("%d\n",sizeof(int));
        return 0;
    }

    结果:
    结果如图

    得到int所占字节数为4;
    又得知
    整型数据在内存中是以补码的方式存储;
    所以当数据>=0时,原码 = 反码 = 补码;
    数值范围为 0 ~ 2^31 - 1;

    #include<stdio.h>
    #include<math.h>
    int main()
    {
        int a = (pow(2, 31) - 1);
        printf("%d\n", a);
        return 0;
    }

    结果如图
    结果 == 2^31 - 1;

    当让 a 为 2^31时;
    结果如图
    可以看到结果为 -2^31;
    这是因为
    当a为2^31 - 1时,在计算机中的存储为01111(31个1);(补码形式)
    a为2^31时,在计算机中的存储为01111(31个1) + 1 =10000(31个0);(补码形式)即为 -2^31在计算机中的存储形式;

    当数据小于0时,
    范围为 -2^31 ~ 0;
    当a为- 2^31 - 1时;
    结果如图
    为 2^31 -1;

    所以int类型的取值范围为(- 2^31 ~ 2^31 -1);

    展开全文
  • int和long类型取值范围。...1. int类型 ---------4字节(32位) ​ -------------------------------------------------------------- 范围 ①(无符号整型) ------------------------- unsigned int ...

    int和long类型取值范围。

    1. int类型 ---------4字节(32位)

    ​ ------------------------------------------------------------------------------- 范围

    ①(无符号整型) -------------- unsigned int ***************************** 0 ~ 4294967295(2^32-1)

    ②(有符号整型)(一般省略signed) int ********** -2147483648(-2^31) ~ 2147483647 (2^31-1)

    有符号,最高位是一个符号位,1代表负数,0代表正数,所以是31位,再减1,是因为正数还有个0。

    2. long类型 ---------8字节(64位)

    范围: long -9223372036854775808(-2^63) ~ 9223372036854775807(2^63-1)

    【例1】

    Long    long1 = 2147483648;   
    
    • 错误
    • 默认是int类型,2147483648为int类型,但是报错了,类型不匹配,而且超出int类型范围
    Long    long2 = (long)2147483648;
    
    • 正确 , 2147483648本来就是int类型,强制类型转换成了long类型
    • 因为long的范围大,可以装下

    【例2】

    Long    long1 = 2147483648L;   
    
    • 正确
    • 在后面加L, 说明定义时就是long类型了,,没有写,就是默认int类型

    3. 还有其他的一些范围(8中基本数据类型),只要记住类型的 字节数(乘以8 = 位数),就可以自己计算范围了。

    在低字节转高字节时自动转换类型:byte < short < char = int < long , float < double

    数据类型字节数二进制位数范围规律
    整 型byte18-128 ~ 127-2^7 ~ 2^7-1
    整 型short216-32768 ~ 32767-2^15 ~ 2^15-1
    整 型int432-2147483648~ 2147483647-2^31 ~ 2^31-1
    整 型long864-9223372036854775808 ~ 9223372036854775807-2^63 ~ 2^63-1
    浮点型float432-3.4E-38 ~ 3.4E+38科学计数法: -3.4E-38表示-3.4×10^(-38)
    浮点型double864-1.7*10(-308)~1.7*10(308)
    字符型char2160~655350~2^16-1
    布尔型boolean18true或falsetrue或false (java中没有0和1)

    注: long型后如果不加L则默认为int型,浮点型如果不加F则默认为double型

    4. 浮点型

    类型指数长度尾数长度
    float8 位23 位
    double11 位52 位

    float类型为例:
    在这里插入图片描述
    从高位到低位排列

    符号位:占一位,1表示负数,0表示正数

    指数位:8位,二进制转换位转换成十进制后再减去127,即为指数。

    尾数位:23位

    同理,double 占8个字节,存储方式:1位符号位 + 11位指数位 + 52位尾数位

    展开全文
  • int取值范围

    万次阅读 多人点赞 2019-08-05 21:19:38
    在学C++或者Java的时候应该都会先了解各种基本数据类型的初值和它们的取值范围,有些人可能会不太重视这块内容,其实很重要,很多大公司面试的过程中都会问到int取值范围,溢出之后会怎么样等问题。 正文 首先来...

    引言

    在学C++或者Java的时候应该都会先了解各种基本数据类型的初值和它们的取值范围,有些人可能会不太重视这块内容,其实很重要,很多大公司面试的过程中都会问到int的取值范围,溢出之后会怎么样等问题。

    正文

    • 首先来看下在C++和Java中一些基本的数据类型

    在c++中的三类基本数据类型
    在这里插入图片描述

    在java中的四类基本数据类型
    在这里插入图片描述

    上图可以看到c++和java之间的基本数据类型的区别,java多了一类布尔类型的数据。然后主要来看下int的取值范围,int这个数据类型在c++和java中都存在。
    大家都知道int的取值范围是-2^31 - 2^31-1 ,也就是-2147483648 - 2147483647 ,那么为什么会这样取值呢?
    在计算机当中数据都是以01二进制形式存储的,而整型变量int占的是4个字节,一个字节8位,也就是32位,所以一个整型变量在计算机当中其实可以用32位的二进制来表示。
    比如1这个整型变量,用二进制可以表示为(int是带符号的整型变量,所以以下第一位代表符号位,)
    0000 0000 | 0000 0000 | 0000 0000 | 0000 0001 这就是正数1的原码(每8位为一个字节所以正好占4个字节) 注:正整数用原码表示,负整数用补码表示(正整数的原码和补码相同)。
    所以正整数在内存中的32位最大可以表示为
    0111 1111 | 1111 1111 | 1111 1111 | 1111 1111 也就是2^31-1=2147483647 因为是正整数,所以第一位符号位是0;从1开始所以要减去全0这种情况。

    同理-1这个负的整型变量在内存中用二进制可以表示为
    1000 0000 | 0000 0000 | 0000 0000 | 0000 0001 这就是负数-1的原码,但是负整数在计算机中是用补码表示的,所以要把这个原码转化成补码,补码就是原码除符号位之外取反后加1。
    1111 1111 | 1111 1111 | 1111 1111 | 1111 1110 这就是-1的反码,再对反码加1
    1111 1111 | 1111 1111 | 1111 1111 | 1111 1111 这就是负数-1的补码了
    那么负整数在内存中的32位最大可以表示为
    1111 1111 | 1111 1111 | 1111 1111 | 1111 1111 这个是最大负整数的补码了,也就是-1
    那么为什么范围是-2147483648开始呢???
    1000 0000 | 0000 0000 | 0000 0000 | 0000 0001 这个是最小负整数对应的补码了,那么还有两种情况没有包含进去:
    一种就是当补码是全0的情况,也就是整数为0这种情况。在二进制中0可以表示为-0和+0这两种情况,但是0只有一个,所以取二进制全为0这种情况,为整数0;
    还有一种是在32位二进制数中,最小负整数的补码为除符号位外全是0的时候,就是-0的补码了,但是前面说过-0和+0都是取二进制全为0的这种情况,所以就把除符号位外全是0这种情况表示为最小的那个数,也就是-2147483648,但其实这个数在内存中并不存在原码,这个补码也不是真正的补码,真正的补码是
    1 1000 0000 | 0000 0000 | 0000 0000 | 0000 0000 已经溢出了
    那么我们再来考虑下如果取的int的值超过这个范围会怎么样,我们用一个程序来验证下

    #include<iostream> 
    using namespace std;
    int main()
    {
    	int i=2147483647;
    	int j=2147483648;
    	int k=2147483649;
    	cout<<i<<endl;
    	cout<<j<<endl;
    	cout<<k<<endl;
    	return 0;
    }
    

    输出结果

    int result
    从上图输出结果来看,可以看到一个很有趣的结果,就是正整数超出2147483647范围后出现了循环取值的现象,也就是2147483648溢出后回到了最小负整数-2147483648,2147483649溢出后变成了-2147483648+1=-2147483647,依次类推。
    所以2147483649可以表示为-2147483648+1,1000 0000 | 0000 0000 | 0000 0000 | 0000 0000 + 0000 0000 | 0000 0000 | 0000 0000 | 0000 0001 = 1000 0000 | 0000 0000 | 0000 0000 | 0000 0001
    所以int整型溢出后可以用这样的方式类推。

    展开全文
  • Go语言-int类型取值范围

    千次阅读 2020-04-09 10:00:01
    相比于C/C++语言的int类型,GO语言提供了多种int类型可供选择,有int8、...1.各int类型取值范围如下 2.关于int类型 3.代码示例 4.总结 1.各int类型取值范围如下 int8: -128 ~ 127 int16: -32768 ~ 32767 int3...
  • 本文中的int类型的相关数据都以32位操作系统下的DVC++编译器环境为准。在下表中可以看到,int类型表示带有符号的整型,而unsigned int类型为无符号的整型。 类型名称 占字节数 取值范围 ...
  • C++数据类型取值范围 1.基本数据类型: ①字符类型:char(字符型) 例:‘A’,’b’ ②整数类型int(整型) 例:4563, 234, 885634 ③浮点类型:float(单精度型)、double(双精度型) 例:3.1456 , 0.9e12 ④空值...
  • GO语言学习笔记2-int类型取值范围

    千次阅读 2019-07-21 15:43:06
    相比于C/C++语言的int类型,GO语言提供了多种int类型可供选择,有int8、int16、int32、...1.各int类型取值范围如下: int8: -128 ~ 127 int16: -32768 ~ 32767 int32: -2147483648 ~ 2147483647 int64: -922337...
  • char(int……)类型取值范围

    千次阅读 2020-11-08 17:39:34
    先抛问题,为什么char的取值范围是-128-127或0-255呢? 再做解答: 概念悉知:char类型占一个字节,一个字节8个比特位。计算机中储存数字储存的是补码,正数的原返补相同; 1.当char是无符号的时:8个比特位分布为 ...
  • 在这里引用一下百度某网友的解释: 问: C++中int范围是多少?为什么我试了最大可以达到2^31-1呢?...),所以能表示的范围就是2的32次方,表示为数值是-2^(32-1) ~ 2^(32-1) -1 ( ^ 表示成方 )(就是 ...
  • 32位无符号整数 , 其表示范围是2的32次方,最大整数为 2的32次方-1 有符号数则要去除一个符号位,正数最大为2的31次方-1 , 负数最小为负 2的31次方    16位整数同理。...unsigned int范围:...
  • 在C语言里,数据类型即说明了它是什么类型数据,更重要的是存储这类数据所需的内存的大小,C语言允许使用的类型如下:在基本类型中的整数类型、浮点数类型和字符类型都已经在之前的文章中使用过了,这里面的_Bool...
  • 大家都知道占2个字节的int类型取值范围是-128~127;那么这个-128究竟是怎么来的呢? 正文 以java语言中的int类型为例,int占用2个字节byte,共8个bit;也就是8个0或者1来表示正数;在计算机系统中规定第一位表示...
  • 数据类型取值范围

    2020-01-06 09:48:33
    在了解取值范围之前先看看每个字节所能占用几个比特(bit)位,以及字节(byte)为例,说说其取值范围的原理。(取值范围在最后) 1. 字节(byte): 1 byte = 8 bit 【1 字节 = 8 比特位 】一个比特位表示一个二进制...
  • Java中int取值范围

    万次阅读 2019-06-12 19:10:06
    https://blog.csdn.net/caonidayeheixiu8/article/details/78423307 先看一个基本概念 bit           比特 ...然后看8种基本类型 整型 by...
  • int 类型取值范围

    千次阅读 2013-04-02 00:58:05
    大伙都知道int类型取值范围是 -2147483648 到 2147483647 那为什么不是 -2147483647 到 2147483648 呢? 因为int类型占4个byte, 就是32个bit 了, 而32个二进制位中最高位的那个一位是表示正负的。 所以
  • java中的int取值范围如何计算?

    千次阅读 2019-05-28 17:45:06
    1、java中int取值范围为-2147483648到+-2147483648。 2、首先jdk中定义int占4个字节32位,32位就是jvm仅仅给分配32个格子的空间,用以存放数据。 3、计算机中用0和1存放数据。那么,32个格子中放满0或1的方法,...
  • java 中 int 类型取值范围

    千次阅读 2017-11-05 10:11:45
    int 是整型,对应我们数学上认识的数值为整数,就是没有小数点的数。 在计算机系统中,我们为这种类型的数定了一个范围(其实我们为每一种类型都定了范围,至于这个范围是多少.....(当然不能那么快说)。 ...
  • 4. C语言 -- 数据类型取值范围

    千次阅读 多人点赞 2018-10-08 08:10:27
    本文主要讲述 C 语言中的数据类型取值范围。首先介绍 C 语言中常见的数据类型数据类型的限定符,sizeof 计算符;给出了位与字节的关系,并给出基本数据类型取值范围
  • java中常用数据类型取值范围,有需要用到java知识的可以保存一下。
  • int类型变量的取值范围

    千次阅读 2020-11-11 22:31:24
    int类型变量的取值范围? 前言 在学C语言的时候应该都会先了解各种基本数据类型的初值和它们的取值范围,有些人可能会不太重视这块内容,其实很重要,很多大公司面试的过程中都会问到int的取值范围,溢出之后会怎么...
  • int、long int 和 long long int取值范围 我们在做整型数字运算时,经常会遇到由于数字值极大导致的结果溢出,导致我们得到错误的结果,大多数情况下将变量定义为 long long int 即可。 为了便于理解,我们需要...
  • 一个byte由八个位组成,符号位 + 数值位,如x0000000,其中第1位是符号位,后面的7位表示数值,第1位是符号位(0为正,1为负)。这样+1就是00000001,-1就是10000001。最大的正数就是0 1111111,即20+ 21+……+26=...
  • int、long、long long类型取值范围

    万次阅读 2018-04-05 21:19:53
    unsigned int 0~4294967295 int -2147483648~2147483647 (2*10^9)unsigned long 0~4294967295long -2147483648~2147483647long long的最大值:9223372036854775807long long的最小值:-922337203685477...
  • C语言int取值范围

    万次阅读 多人点赞 2018-03-10 23:01:09
    C语言int的取值范围 我们常常看到int取值范围为-32768~32767,实际上int的取值范围依赖于计算机系统,在16位机器中,int占16位,取值范围为前面所说的-32768~32767(-2^16...ISO/ANSI C规定,int类型的最小范围为...
  • MySQL整数数据类型取值范围

    千次阅读 2018-11-01 10:07:33
    数据表用到整数,MySQL整数数据类型取值范围,tinyint,smallint,mediumint,int,bigint等等,下面看看取值范围  1,tinyint 整数 tinyint(m) 1个字节 范围(-128~127),2, 2,smallint 整数 smallint...
  • c++基本数据类型及其取值范围

    千次阅读 2018-10-10 16:52:27
    #include&lt;iostream&gt; #include&...int main() { cout &lt;&lt; "type: \t\t\t" &lt;&lt; "************size**************" &lt;&
  • C#值数据类型取值范围

    千次阅读 2019-07-01 09:00:32
    保留字 System命名空间中的名字 ... 取值范围 sbyte System.Sbyte 1 -128~127 byte System.Byte 1 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 128,020
精华内容 51,208
关键字:

int类型的数据取值范围