信息表示

Data

内容
概述 - 自学
系统组成
信息表示
微型计算机系统 - 自学
发展 - 自学
二进制信息
. 计算机中信息编码的基本元素是0和1两个数码,称为二进制码
. 计算机存储器中存储的都是由0和1组成的信息编码,它们分别代表各自不同的含义,有的表示计算机指令与程序,有的表示二进制数据,有的表示英文字母,有的表示汉字,还有的可能是表示色彩与声音
特点
电路简单:二进制数中只有0和1两个数码,易于用两种对立的物理状态表示
可靠性高:计算机中实现双稳态器件的电路简单,而且两种状态所代表的两个数码在数字传输和处理中不容易出错,因而电路可靠性高
运算简单:在二进制中算术运算特别简单,可以大大简化计算机中运算电路的设计
易于运算:二进制数码的1和0与逻辑命题的两个值"真"(True)与"假"(False)相对应,使逻辑运算成为计算机电路设计的数学基础
数据存储
位 bit:一个二进制位称为比特,用b表示,是计算机中存储数据的最小单位。一个二进制位只能表示0或1两种状态
字节Byte:八个二进制位称为字节,通常用B表示,字节是计算机数据处理和存储的基本单位
字Word:一个字由若干个字节组成,通常取字节的整数倍,是计算机一次存取、加工和传送的数据长度。常用的字长有8位、16位、32位和64位等
换算关系
单位 单位 换算
字节 B 1B = 8bit
千字节 KB 1KB = 1024B = 210B
兆字节 MB 1MB = 1024KB = 210KB = 220B
吉字节 GB 1GB = 1024MB = 210MB = 220KB = 230B
太字节 TB 1TB = 1024GB = 210GB = 220MB = 230KB = 240B
Tips
表示容量时,1K=210
表示速率时,1K=103
基本运算
算术运算
加法 + 真值表:满2进1
运算符 结果
+ 0 0 0
0 1 1
1 0 1
1 1 0
减法 - 真值表:不足借位
运算符 结果
- 0 0 0
0 1 1
1 0 1
1 1 0
乘法 * 真值表
运算符 结果
* 0 0 0
0 1 0
1 0 0
1 1 1
除法 \ 真值表
运算符 结果
\ 0 0 0
0 1 0
1 0 溢出
1 1 1
逻辑运算
逻辑与真值表:全真,结果才为真;否则为假
运算符 结果
and && 0 0 0
0 1 0
1 0 0
1 1 1
逻辑或真值表:有一个真,结果就为真
运算符 结果
|| or 0 0 0
0 1 1
1 0 1
1 1 1
逻辑非真值表:非真为假;非假为真
运算符 结果
! not 0 1
1 0
数制和转换
数制
. 表示一个数的计数方法称为进位计数制;常见有:二进制 binary、八进制 octal、十进制 decimal、十六进制 hexadecimal
. 构成数制有两个要素:基数和位权
. 基数:在一个数中的每一个数位上可能出现的不同数字的个数。例如:二进制数基数是2,十进制数基数为10
. 位权:某个位置上的数代表的数量大小。表示此数在整个数中所占的份量(权重)
不同进制的数码表示
进制 表示 权值 数码 说明
二进制 0b 2 0 1 逢二进一
八进制 0o 8 0 1 2 3 4 5 6 7 逢八进一
十进制 默认 10 0 1 2 3 4 5 6 7 8 9 逢十进一
十六进制 0x 16 0 1 2 3 4 5 6 7 8 9 A B C D E F 逢十六进一
X进制 → 十进制
. 使用多项式,按照对应的权展开
. 小数点前面是正数幂,小数点后面是负数幂
(101.01)2
=1×22 +0×21+1×20+0×2-1+1×2-2 = (5.25)10
2的n次幂
2 0 1 2 5 32
2 1 2 2 6 64
2 2 4 2 7 128
2 3 8 2 8 256
2 4 16 2 9 512
2 10 1024
(365.2)8
= 3×82+6×81+5×80+2×8-1 = (245.25)10
(F5.4)16
=15×161+5×160+4×16-1 = (245.25)10
Python中各进制转10进制 - 部分开发环境仅限于整数之间的转换,浮点数的转换需要自定义函数实现
>>> int('0b1011',2)
11
>>> int('1011',2)
11
>>> int('0o1011',8)
521
>>> int('1011',8)
521
>>> int('0x1011',16)
4113
>>> int('1011',16)
4113
十进制 → X进制
. 方法1:除X求余法 - 余数逆序|从后往前排列
. 方法2:最大凑整法
(97)10转二进制
[求余法]
余 ↑
97 48 1
48 24 0
24 12 0
12 6 0
6 3 0
3 1 1
1 0 1
∴ (1100001)2
[最大凑整法]
97
= 64 + 32 + 1
= 26 + 25 + 20
∴ (1100001)2
十进制转二进制
>>> bin(97)
'0b1100001'
>>> oct(97)
'0o141'
>>> hex(97)
'0x61'
八进制 → 二进制
.每1位八进制对应3位二进制
(652.307)8
= (6 5 2.3 0 7)8
= (110 101 010.011 000 111)2
二进制 → 八进制
.每3位二进制对应1位八进制
.不足3位的,整数部分前面|高位补0;小数部分后面|低位补0
(11010101.0100101)2
= (11 010 101.010 010 1)2
= (011 010 101.010 010 100)2
= (325.224)8
十六进制 → 二进制
.每1位十六进制对应4位二进制
(1C5.1B)16
= (1 C 5.1 B)162
= (0001 1100 0101.0001 1011)2
二进制 → 十六进制
.每4位二进制对应1位十六进制
.不足4位的,整数部分前面|高位补0;小数部分后面|低位补0
(1011010101.0111101)2
= (10 1101 0101.0111 101)2
= (0010 1101 0101.0111 1010)2
= (2 D 5.7 A)16
进制之间的转换
>>> bin(int('652',8))
'0b110101010'
>>> oct(int('110101010',2))
'0o652'
>>> hex(int('110101010',2))
'0x1aa'
>>> bin(int('1aa',16))
'0b110101010'          
十进制小数 → 二进制小数
. 小数部分不断乘2,结果取整,直到小数部分为0
. 顺序排列取整的值
. 转其它进制小数类似
(0.3125)10
*2 取整 ↓
0.3125 0.625 0
0.625 1.25 1
0.25 0.5 0
0.5 1.0 1
∴ (0.3125)10 = (0.0101)2
(0.8125)10
*2 取整 ↓
0.8125 1.625 1
0.625 1.25 1
0.25 0.5 0
0.5 1.0 1
∴ (0.8125)10 = (0.1101)2
十进制小数 → 八进制小数
. 小数点后面部分乘8取整
(58.5)10转8进制
整数部分:72(略)
0.5*8=4.0,小数部分为0,已经乘完
∴ (58.5)10 = (72.4)8
十进制小数 → 十六进制小数
. 小数点后面部分乘16取整
. 通常有位数要求,如保留4位
(4586.32)10转16进制
整数部分:11EA(略)
32*16 = 5.12,取整5,留.12
12*16 = 1.92,取整1,留.92
92*16 = 14.72,取整14,留.72
72*16 = 14.52,取整11,留.52
小数部分正序排列:51EB
∴ (4586.32)10 = (11EA.51EB)16
Window系统自带的计算器 - 程序员模式