python day1

1.1 计算机硬件基本认知

cpu:   *处理器.   相当于人的大脑.运算中心,控制中心.

内存:  临时存储数据.  优点:读取速度快。 缺点:容量小,造价高,断电即消失.

硬盘:  长期存储数据.  优点:容量大,造价相对低,断电不消失。 缺点:读取速度慢.

操作系统:统一管理计算机软硬件资源的程序

python day1

 

 

1.2计算机文件大小单位

b = bit 位(比特)
B = Byte 字节

1Byte = 8 bit #一个字节等于8位 可以简写成 1B = 8b
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
1EB = 1024PB

1.3进制转换

二进制:由2个数字组成,有0 和 1 例: 0b101
八进制:由8个数字组成,有0,1,2,3,4,5,6,7 例: 0o127
十进制:有10个数字组成,有0,1,2,3,4,5,6,7,8,9 例: 250
十六进制:有16个数字组成,有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(字母大小写都可以,分别代表10,11,12,13,14,15) 例:0xff 0Xff 0XFF

 

1.3.1 二进制 转化成 十进制

#例: 0b10100101
运算:1* 2^0 + 0* 2^1 + 1* 2^2 + 0* 2^3 + 0* 2^4 + 1* 2^5 + 0* 2^6 + 1* 2^7=
1 + 0 + 4 + 0 + 0 + 32 + 0 + 128 = 165

 

1.3.2 八进制 转化成 十进制

#例: 0o127
运算:7*8^0 + 2*8^1 + 1*8^2 = 7+16+64 = 87

 

1.3.3 十六进制 转化成 十进制

运算:15*16^0 + 15*16^1 = 255

 

*小练习: 转化成对应进制

723 => 2    1011010011
654 => 2    1010001110         
723 => 8      1323
654 => 8    1216
723 => 16     2d3
654 => 16     28e

 

1.3.7 二进制与八进制转换

二进制与八进制对应关系:
八进制 二进制
0     000
1      001
2     010
3     011
4     100
5     101
6     110
7     111

 

例:1010100101
八进制:从右向左 3位一隔开 不够三位用0补位 变成:
001 010 100 101
0o 1 2 4 5

 

十六进制 二进制
0       0000
1      0001
2     0010
3     0011
4       0100
5       0101
6     0110
7       0111
8     1000
9     1001
a     1010
b     1011
c     1100
d     1101
e     1110
f      1111

例:1010100101
十六进制:从右向左 4位一隔开 不够四位用0补位 变成:
0010 1010 0101
0x2a5

 

先转换成二进制 再去对应转换
比如:0x2a5 转换成 1010100101 再转8进制 0o1245

*小练习: 转化成对应进制

0x1DD => 8   735
0x29a => 8   1232
0o573 => 16  17b
0o336 => 16  de

 

# 1.原码 或 补码 都是用来表达二进制数据
原码: 用来转换对应进制
反码: 二进制码0变1,1变0叫做反码,反码用于原码补码之间的转换.(首位符号位不变)
补码: 用来做数据的存储和运算. 补码的提出用于表达一个数的正负(实现减法)

计算机的所有数据在底层都是以二进制的[补码]形式存储
实际上人们看到的数字是[原码]转化来的
[原码] 和 [补码] 可以通过计算互相转化

# 2.整体顺序:
补码 -> 原码 -> 最后人们看到的数
***进制转换的时候需要先把内存存储的补码拿出来变成原码在进行转换输出***

# 3.运算规律:
原码:正数高位补0 负数高位补1 (前面空白位全是1)
数字1 00000000 1 正数高位第一位补0
数字-1 10000000 1 负数高位第一位补1

计算机默认只会做加法,实现减法用负号: 5+(-3) => 5-3
乘法除法:是通过左移和右移 << >> 来实现

# 4.原码 与 反码之间的转换
(原码 反码 补码之间的转换 , 符号位不要动)
正数: 原码 = 反码 = 补码
负数: 原码 = 补码取反加1 给补码求原码
负数: 补码 = 原码取反加1 给原码求补码

#给原码求补码
-6 的补码是多少?  010
6 的补码是多少?  110
10 的补码是多少?   1010
-10 的补码是多少? 0110
9 的补码是多少?    1001
-9 的补码是多少?  0111
#给补码求原码
1 ... 111 00011 (高位都是1)   -29 
1 ... 111 0110010 (高位都是1)    -156
# 9+(-5) 用二进制相加运算一下 -4