- 前言
- 整形长度
- 整数在内存中的存储形式
- 整形存储的原理探究
一:前言
整数是从小学就开始学习的内容,作为程序员,整形是平时玩的最不亦乐乎的东西。这篇博文,内容基本都在大学计算机基础书本中出现,这里就算做个人笔记,加深记忆~
二:整形长度
以C语言为例,整形是int。一般占用4个字节,即可以表示2^32个数字,大约43亿。虽然已经很大了,不过如果要表示更大的数字,比如银河系的星球个数,那就需要存储量更大的数据类型,于是便出现了long。如果要存储的数据是比较小的,为了不浪费内存空间,又出现了short类型。三者的关系是:
short 至少占用 2 个字节。
int 建议为一个机器字长。32 位环境下机器字长为 4 字节,64 位环境下机器字长为 8 字节。
short 的长度不能大于 int,long 的长度不能小于 int。
也就是说,short可能和int一样大,int也可能和long一样大。
三:整数在内存中的存储形式
C语言规定,int在内存中的最高位为符号位,0~30 位表示数值,31 位表示正负号。当然,如果明确数据的范围是正数,C语言也提供了无符号数,即只能表达正数范围的整数。无符号数没有符号位,相当于32位都是表示数值,所以无符号数表示正数的范围是有符号数的两倍。
加减法是最基本的运算,所以在计算机中直接由硬件提供,所以硬件的设计要尽量简单。有符号数因为有符号位,计算机要专门识别符号位和数值位,无疑加大了硬件电路的复杂度,所以,人们想出了两个优化目标:
1.让符号位也参与运算,简化电路
2.加法和减法统一
那如何优化呢?这要先从几个概念说起~
-
原码:
将一个整数转换成二进