记得某次面试中,面试官让我写个代码段:
将两个长度为n的字符串相加,其中字符串为纯数字,求结果?
哦呵,面试官的意图非常明显,无非是想考察下面试者对于数据类型取值范围的掌握、数据溢出的处理。
em...是的...但是...,我忘了 =.=I|..,int的取值范围?这个取值范围是怎么来的?数据溢出会变成什么样?......,再见了,青春。
一、基本数据类型
数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,是语言的抽象原子概念,可以说是语言中最基本的单元定义。java是强类型语言,本质上可将数据类型分为两种:基本类型和引用数据类型。
基本类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。
数据类型图 基本数据类型属性表二、取值范围的由来
以short短整型为例,short类型占2个字节,即16位。
1、16位二进制可表示的范围为:
0000,0000,0000,0000 ~ 1111,1111,1111,1111(0 ~ 2^16-1)
2、java中整数类型的数据在保存为二进制时,都定义了符号位,最高位(第一位)表示符号:0表示正,1表示负。即16位二进制数可表示的范围为:
0111,1111,1111,1111 ~ 1111,1111,1111,1111(2^15-1 ~ -2^15-1)
3、
问:在不同位数的操作系统上,基本数据类型所表示的范围是否相同?
答:在C/C++上是不同的,但是在java上是相同的。(具体不深究)
三、数据溢出
网友评论