总结 C++中 基本内置类型 数据所占大小 和数据类型
来源:互联网 发布:linux运维面试会问什么 编辑:程序博客网 时间:2024/06/05 08:41
以前看C++ primer ,基本内置类型的时候,大概只知道int型 表示整数,float 和double 型 表示浮点数, double型精度很高,决定自己用int 或者 double 的就是 我是小数还是 整数,便没有载关注细节。 直到现在做图像处理,因为图片较多,又限制32位4g内存, 所以对内存的把握就特别重要,重新去看数据类型大小和范围。
内置算术类型 :
主要算术类型,见下面表格:
类型含义最小尺寸bool布尔类型未知char字符8位wchar_t宽字符16位char16_tUnicode16位char32_tUnicode32位short短整型 16位int整型32位long 长整型32位long long长整型64位float单精度浮点数6位有效数字,32位double 双精度浮点数10位有效数字,64位long double扩展精度浮点数10位有效数字
内置类型的机器实现:
比特 b:计算机以 比特序列存储数据,也就是通常说的“位”,也就是单个的“1” 或者 "0" ; 单位是b ;
字节B: 不过大部分的时候,计算机用2的整数次幂为块处理内存,可寻址的最小内存块称为“字节(byte)” ,一般一个字节 有8 位 ,单位是B ;
字 : 存储的基本单元称为“字(word)” , 不过这个概念不常用;
K : 1K = 1024 B ; 1M=1024K ; 1G=1024M ; 1T=1024G ;
比如我们说一副1920*1080的图,假设用float 表示灰度值,因为float 大小是4个字节,所以大小应该为 1920*1080*4*3B = 1920*1080*4 *3 /1024/1024 = 23.7M 。 注意到图像灰度值都在0-255之间,也就是2的8次方(1个字节)足够表示,所以我们也可以用char型表示灰度值,这个时候一幅图的大小就是 23.7/4 M。 注意这个大小说的是,占用内存的大小,而不是存储到硬盘上的大小。
带符号类型和无符号类型
除了布尔型和扩展的字符型之外,其他整型都可以划分为有符号型(signed)和无符号型(unsigned),有符号型可以表示负数,0,正数,无符号型只能表示0和正数。
对于非字符型char之外,int,float,double等均表示有符号型,比如int,表示的数字范围是 [-2^31 , 2^31 -1] 即 [-2147483648,2147483647] , 但是无符号int 则可以表示[0,4294967294] 范围,超出表示范围,结果则是根据编译器表示原理,得到一个其他的数,如果参与运算的话,结果则不在控制之内。其他同理。 值得一提的是,char型,如果不用signed 或者 unsigned 则每个机器上的表示是不一样的,就是说单纯一个char 型,有的可以表示负数,有的则不可以,如果用无符号说表示 负数,结果不受控制。 unsigned char 表示 [0,255] , signed char [-127,127] 。
数据类型的选择
作为一个程序员,在定义一个变量的时候,心里要清楚要怎么应用这个数字,以及这个数字的大致范围。
- 在明确知道数值不可能为负的时候,选用无符号整型,比如图像灰度值。
- 在执行整数运算的时候,如果不是对内存要求严格,选择int 型,因为short型表示范围为[-32767,32767], 是个 万 数量级的数字,实际应用中很可能超过范围。
- 因为char型 在有些机器上是有符号的 ,有些机器上是无符号的,所以如果需要使用一个不大的整数,使用时明确指定signed 或是 unsigned, 比如图像灰度值完全可以用signed char型表示,事实上 opencv 中就是用char表示的灰度值。
0 0
- 总结 C++中 基本内置类型 数据所占大小 和数据类型
- C/C++中基本数据类型在不同系统中所占空间大小
- JAVA中基本数据类型所占内存空间大小
- c语言基本数据类型在内存中所占字节
- C/C++中基本数据类型所占内存大小
- C语言数据类型所占空间大小
- C++中基本的数据类型和所占的内存大小
- C语言中数据类型所占字节数总结
- 32位电脑“内置类型"所占空间大小
- C#/Java/C/C++基本类型所占大小及表示范围
- Java基本类型所占存储空间大小的整理
- Microsoft visual C++ 2010学习版中C语言基本数据类型所占字节大小(系统为64位win8.1)
- 基本数据类型所占的字节数【C/C++】
- 各种类型所占大小
- C++主要数据类型在计算机中所占字节大小
- C++主要数据类型在计算机中所占字节大小
- C/C++基本数据类型所占字节数
- C/C++基本数据类型所占字节数
- 记录csdn第一篇博客
- 在DOS下引用jar包
- 【JZOJ3852】单词接龙
- xml的4中解析方式与详解
- 使用IntelliJ IDEA 配置Maven(入门)
- 总结 C++中 基本内置类型 数据所占大小 和数据类型
- spark parquet 从hdfs 上读 和写 scala 版本
- 第4节-牛顿方法、指数分布族和广义线性模型
- java中image与tif图片的互转
- Java反射机制详解
- Poj 1061 青蛙的约会【拓展欧几里得】
- IO流_面试题之final,finally和finalize的区别、面试题之如果在finally之前有return
- (四十四)进程间的锁
- ViewPager作用于广告条的流程