计算机内部信息的存储单位
信息的单位通常采用“位”、“字”、“字节”
- 位(bit):度量数据的最小单位,表示1位二进制信息
- 字节(Byte):一个字节由8位二进制数字组成
(1Byte=8bit)
。字节是信息存储中最常见的基本单位。计算机的存储器(包括内存与外存)通常也是以多少字节来表示它的容量。常用的单位有:
单位 | 转换 |
---|---|
K字节 (KB) | 1K=1024B |
M(兆)字节 (MB) | 1M=1024K |
G字节 (GB) | 1G=1024M |
T字节 (TB) | 1T=1024G |
P字节(PB) | 1P=1024T |
E字节(EB) | 1E=1024P |
Z字节(ZB) | 1Z=1024E |
Y字节(YB) | 1Y=1024Z |
… | … |
- 字(Word):字是位的组合,并作为一个独立的信息单位处理。字又称计算机字,它的含义取决于机器的类型、字长以及使用者的要求。常用的固定字长又8位、16位、32位等。
- 信息单位用来描述机器内部数据格式,即数据(包括指令)在机器内的排列形式,如单字节数据,可变长数据(以字节为单位组成几种不同长度的数据格式)等。
- 机器字长:一般指参加运算的寄存器所含有的二进制数的位数,它代表了机器精度,如32位、64位
补充一点二进制知识:
负数:补码等于该数反码+1 (符号位为1)
整数:原码、反码、补码形式相同
符号位可作为数值参加运算,结果正确
基本数据类型
C++基本数据类型
类型名 | 长度(字节) | 取值范围 |
---|---|---|
bool | 1 | false,true |
char | 1 | -128~127 |
signed char | 1 | -128~127(28) |
unsigned char | 1 | 0~255(2*28) |
short(signed short) | 2 | -32 768~32767(216) |
unsigned short | 2 | 0~65535(217) |
int (signed int) | 4 | -2147 483 648~2147 483 647 (232) |
unsigned int | 4 | 0~4294 967 295(233) |
long(signed long) | 4 | -2147 483 648~2147 483 647 |
unsigned long | 4 | 0~4294 967 295 |
float | 4 | 3.4x10(-308)~3.4x10(308) |
double | 8 | 1.7x10(-308)~1.7x10(308) |
long double | 8 | 1.7x10(-308)~1.7x10(308) |
关键字 long 、short、signed、unsigned通常被成为修饰符
- 用
short
修饰int
时,short int
表示短整型,占2个字节,int
可省略long
可以用来修饰int
和double
,用long
修饰int时,long int
表示长整形,占四个字节,int
可以省略 - 细节1:不同编译器不同实现方法。32位处理器的C++编译器通常将int和long两种数据类型都用4个字节表示,一些面向64位处理器的C++编译器中,
int
用4个字节表示,long
用8个字节表示,So int and long are different types. 一般情况下,使用int有最高的处理速度 - 细节2:
signed
和unsigned
表示有无符号位,修饰char
和int
,有符号整数在计算机内以二进制补码形式存在,无符号整数只能是整数,在计算机中以绝对值存放 - 细节3:
char
与其他数据类型不同,ISO C++标准没有规定它默认情况下是/无符号的,它会因为不同的编译环境而异,Sochar
,unsigned char
,signed char
是三种不同的数据类型。 - 两种浮点类型除了取值范围有所不同,精度也不同,float可以保存7位有效数字,double可以保存15位有效数字