Data Types 数据类型
-
Primary: int、char、bool、float、double、void
-
Derived: pointer、reference、array、function
-
User Defined: class、struct、enum、union
1. 进制
数据类型在不同的 操作系统
或 硬件平台
中,这些数据类型的 值域范围
和 所占用的内存的数量
有关
-
char 字符型
-
int 整型
-
float 单精度浮点型
-
double 双精度浮点型
-
void 空类型
1 有关进制的思考
我们习惯的进制是十进制,计算机里面常用的是二进制、八进制、十六进制
思考:有没有三进制、五进制、十三进制...?
随机定一个进制,比如3进制
三进制表示个位数:0 1 2 十进制表示:1 -> 三进制表示:1 十进制表示:2 -> 三进制表示:2 十进制表示:3 -> 三进制表示:10 十进制表示:4 -> 三进制表示:11 十进制表示:5 -> 三进制表示:12
C 与 C++ 中进制的输出
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
cout << "———————— C语言 ————————" << endl;
printf("%o\n",35); //按八进制格式输出
printf("%d\n",35); //按十进制格式输出
printf("%x\n",35); //按十六进制格式输出
cout << " " << endl;
cout << "————————C++语言————————" << endl;
cout << "35的8进制:" << std::oct << 35 << endl;
cout << "35的10进制" << std::dec << 35 << endl;
cout << "35的16进制:" << std::hex << 35 << endl;
cout << "35的2进制: " << bitset<8>(35) << endl; //<8>:表示保留8位输出
return 0;
}
2 位、字节
位 (bit)
-
来自英文 bit,音译为“比特”,表示二进制位
-
位是计算机内部数据存储的最小单位,11010100是一个 8 位二进制数
-
一个二进制位只可以表示
0
和1
两种状态: 两个二进制位可以表示 00、01、10、11 共4个数;三位二进制数可表示八个数……
字节 (Byte)
-
字节来自英文 Byte,习惯上用大写的
B
表示 -
字节是计算机中
数据处理
的基本单位,计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成,即 1 个字节等于 8 个比特(1Byte=8bit)。八位二进制数最小为 00000000(十六进制:00),最大为 11111111(十六进制:FF);通常 1 个字节可以存入一个 ASCII 码,2 个字节可以存放一个汉字国标码
3 数字在计算机中的存储
无符号规则 unsigned
-
可以直接转换
1001 1010 十六进制0x9A 十进制 154
1001 1010 十六进制0x9A 十进制 154
有符号规则
-
最高位是符号位:1(负数), 0(正数)
-
原码:最高位是符号位,对其它的位进行本身绝对值即可
-
反码:
-
正数:反码和原码相同
-
负数:符号位一定是1,其余为对原码取反
-
-
补码:
以下例子都是 8 位 -9在计算机的表示:1111 0111 原码: 1000 1001 反码: 1111 0110 补码: 1111 0111 ~-9 = 0000 1000(按位取反) -12在计算机的表示:1000 1100 原码: 1000 1100 反码: 1111 0011 补码: 1111 0100 ~12 = 0000 1011(按位取反) -15在计算机的表示: 原码: 1000 1111 反码: 1111 0000 补码: 1111 0001 ~15 = 0000 1110(按位取反)
-
正数:补码和原码相同
-
负数:符号位一定是1,反码+1
-
拓展
-
计算机中浮点数的表示形式:
IEEE754
4 字符编码
百练成砖,我们一起成长!