1. 内置类型
基本内置类型包含,字符,整型,浮点数等。同时,提高自定义数据类型的机制。
类型 | 含义 | 最小尺寸(比特) |
---|---|---|
bool | 布尔类型 | 未定义 |
char | 字符 | 8位 |
wchar_t | 宽字符 | 16位 |
char16_t | Unicode字符 | 16位 |
char32_t | Unicode字符 | 32位 |
short | 短整型 | 16位 |
int | 整型 | 16位 |
long | 长整型 | 32位 |
long long | 长整型 | 64位 |
float | 单精度浮点数 | 6位有效数字 |
double | 双精度 | 10位有效数字 |
long double | 扩展精度浮点数 | 10位有效数字 |
基本概念
位(bit):是计算机所能表示的最小的、最基本的数据单位。由于计算机使用的是二进制数,因此一位就是一个二进制数。
字节(Byte):一个连续8位的二进制数码称为一个字节,即1Byte=8bit。
字(Word):一般由两个字节组成,即16位二进制数码组成,显然1Word=2Byte=16bit。
双字((Double Word):两个字组成,即四个字节(32位)。
字长:字长是计算机一次处理二进制的位数。(MCS-51是8位单片机,字长就是8位)
内置类型的机器实现
计算机以比特序列存储数据,每个比特非0即1,例如
001110011100000...
大多数计算机以2的整数次幂个比特作为块来处理内存,可寻址的最小内存块称为“字节(byte)”,存储的基本单位称为“字(word)”,它通常由几个字节组成。
在C++语言中,一个字节要至少能容纳机器基本字符集中的字符。 大多数机器的字节由8比特构成,字则由32或者64比特构成,也就是4或者8字节。
大多数计算机将内存中的每个字节与一个数字(被称为地址(address))关联起来,在一个字节为8比特,字为32比特的机器上,一个字的内存区域如下:
其中,左侧为字节的地址,右侧为字节中8比特的具体内容。
如果位置73624处的对象是float,并且机器中float以32比特存储,那么,我们就能知道这个对象的内容占满了整个字。
在C++中,通常float以1个字(word)(32比特)来表示,double以2个字(64比特)来表示,long double 以3或者4个字(96或者128比特)来表示。
一般来说,类型float和double分别有7和16个有效位。
从无符号数减去一个值,确保结果不能是负值。
#include <iostream>
using namespace std;
int main(){
unsigned u1 = 42, u2 = 10;
cout << u2 - u1 << '\n';
cout << u1 - u2 << '\n';