c语言和java语言数据类型的取值
来源:互联网 发布:图像识别算法matlab 编辑:程序博客网 时间:2024/05/19 06:51
在面试时有被问到,最基本的问题,我却不是很清晰,所以事后特意去搜索了一下,将结果整理如下:
不同数据类型所表示的取值范围取决于他所占的内存空间的大小,8位为一个字节
C语言中并没有明确规定数据类型的取值范围,在不同位数的操作系统中,同一数据类型可能会占不同长度的内存空间,自然也就会有不同的取值范围。C语言数据类型表示整理如下
16 位系统 unsigned 取值范围(忽略正负) signed取值范围(不忽略正负)
char 1字节(8位) 0~ 2^8-1 (无符号位2进制数的最大值) -2^7~2^7-1(-128~127)
short 2字节(16位) 0~ 2^16-1 -2^15~2^15-1
int 2字节(16位) 0~ 2^16-1 -2^15~2^15-1
long 4字节(32位) 0~ 2^32-1 -2^31~2^31-1
32 位系统
char 1字节(8位)
short 2字节(16位)
int 4字节(32位)
long 4字节(32位)
long long 8字节(64位)
64 位系统
char 1字节(8位)
short 2字节(16位)
int 4字节(32位)
long 8字节(64位)
long long 8字节(64位)
通过上面16位系统不同数据类型的取值范围,很轻松的就能够求出其他不同位数操作系统的不同数据类型取值范围,只要知道了该数据类型在当前位数操作系统所占的内存字节长度,就可以很容易的推出取值范围,usigned为 0~2^位数-1,signed为
-2^(位数-1)~2^(位数-1)-1,这里简述一下取值范围的求法
signed需要占用一个符号位来表示正负,而我们所用的机器大多采用补码表示法,以8位的数据类型为例
对于正数,符号位为0 ,和原码一样,对于负数,符号位为1,能取到的最小值为10000000,
将非符号位按位取反为11111111,然后+1 ,为1100000000,表示的数为-128
对于java语言,数据类型所占内存是固定的,如下
boolean 1bit(位)
byte 8bit 取值范围的算法和c语言中signed数据类型一样(java 语言数据类型一般都是有正负的)
char 16bit
short 16bit
int 32bit
long 64bit
float 32bit 1.4E-45 ~ 3.4028235E38
double 64bit 4.9E-324~1.7976931348623157E308
浮点型的数据类型的存储分为符号位,阶码,尾数,算起来实在是蛋疼,java与c语言有些区别,我们不必要具体的求算,只需要记住浮点的取值就好了!
在学校学习编译原理时,自己只是一知半解,能过且过,现在想想,实在是不应该,这些东西可能对实际编写代码意义不大,然而多学一些相关知识总是好的,可惜这么简单的道理我当时却没想通,唉!- c语言和java语言数据类型的取值
- C语言基本数据类型的长度和取值范围
- java语言和c语言中基本数据类型的长度
- c语言各个数据类型的取值范围
- C语言各种数据类型的取值范围
- C语言数据类型取值范围解析
- C语言各种数据类型取值范围
- C语言数据类型取值范围解析
- C语言各种数据类型取值范围
- C语言各种数据类型取值范围
- C语言各种数据类型取值范围
- C语言数据类型取值范围
- C语言各种数据类型取值范围
- c语言数据类型取值范围
- C语言各种数据类型取值范围
- C语言各种数据类型取值范围
- C语言各种数据类型及其在系统中占的字节和取值范围
- C语言各种数据类型在系统中占的字节和取值范围
- NYOJ 113 字符串替换(C++STL解法)
- 九度oj 1070
- CakePHP入门
- MFC消息机制分析
- leetcode[235]:Lowest Common Ancestor of a Binary Search Tree
- c语言和java语言数据类型的取值
- javaAPI(字节流,打印流)
- Android基础入门教程——1.2.2 使用Android Studio开发Android APP
- java知识
- 设计模式2——简单工厂模式
- 拾取技术和图形管道逆变换
- Linux学习与总结-1入门概念
- 竞赛题: 回文问题
- 事件冒泡机制