【一】Python全栈之路–原反补码_变量
1. Python环境搭建
1.1 python解释器安装
1.2 pycharm工具安装
1.3 pycharm设置
2. 2_8_16_10进制相互转换
二进制:由两个数字组成,有0和1 例:0b101
八进制:由八个数字组成,有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
2.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
2.2 八进制转十进制
#例: 0o127
运算:7*8^0 + 2*8^1 + 1*8^2 = 7+16+64 = 87
2.3 十六进制转十进制
#例: 0xff
运算:15*16^0 + 15*16^1 = 255
2.4 十进制转二进制
426 => 0b110101010
运算过程: 用426除以2,得出的结果再去不停地除以2,
直到除完最后的结果小于2停止,
在把每个阶段求得的余数从下到上依次拼接完毕即可
2.5 十进制转八进制
426 => 0o652
运算过程: 用426除以8,得出的结果再去不停地除以8,
直到除完最后的结果小于8停止,
在把每个阶段求得的余数从下到上依次拼接完毕即可
2.6 十进制转十六进制
运算过程: 用426除以16,得出的结果再去不停地除以16,
直到除完最后的结果小于16停止,
在把每个阶段求得的余数从下到上依次拼接完毕即可
2.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
2.8 二进制与十六进制转换
十六进制 二进制
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
0x 2 a 5
2.9 八进制与十六进制转换
先转换成 二进制 再去对应转换
比如:0x2a5 转换成 1010100101 再转8进制 0o1245
3. 原码_反码_补码
# 1.原码 或 补码 都是二进制数据
原码: 二进制的表现形式
反码: 二进制码0变1,1变0叫做反码,[原码][补码]之间的转换形式.(***首位符号位不取反)
补码: 二进制的存储形式
数据用[补码]形式存储
数据用[原码]形式显示
[原码] 和 [补码] 可以通过[反码]互相转化,互为取反加1
# 2.提出补码的原因
补码的提出用于表达一个数的正负(可实现计算机的减法操作)
计算机默认只会做加法,实现减法用负号: 5+(-3) => 5-3
乘法除法:是通过左移和右移 << >> 来实现
# 3.[原码]形式的正负关系:
原码特点: 第一位是1
00000000 1 表达数字 +1
10000000 1 表达数字 -1
# 4.[补码]形式的正负关系:
补码特点: 高位都是1
00000000 1 表达数字 +1
11111111 1 表达数字 -1
# 5.运算顺序:
补码 -> 原码 -> 最后人们看到的数
***进制转换的时候需要先把内存存储的补码拿出来变成原码在进行转换输出***
转换规律:
如果是一个正数: 原码 = 反码 = 补码
如果是一个负数: 原码 与 反码 之间 , 互为取反加1
原码 = 补码取反加1 给补码求原码
补码 = 原码取反加1 给原码求补码
举个栗子:
转换规律:
如果是一个正数: 原码 = 反码 = 补码
如果是一个负数: 原码 与 补码 之间 , 互为取反加1
原码 = 补码取反加1 给补码求原码
补码 = 原码取反加1 给原码求补码
5 + 3 =8
5
原码:101
反码:101
补码:101
3
原码:011
反码:011
补码:011
5 + 3
0101
0011
1000 => 8
<===================>
原码特点:(第一位是符号位,来表达正负)
第一位是0 00000000 1 表达数字正1
第一位是1 10000000 1 表达数字负1
补码特点:
正数高位都是0
负数高位都是1
反码: 二进制码0变1,1变0叫做反码,[原码][补码]之间的转换形式.(首位符号位不取反)
5 + (-3) = 2
5
原码:101
反码:101
补码:101
-3
原码:1000 ... 011
反码:1111 ... 100
补码:1111 ... 101
0000 ... 101
1111 ... 101
0000 ... 010 => 2 (返回的数是正数 : 原码 = 反码 = 补码)
<===================>
-5 + 3 = -2
-5
原码:1000 ... 101
反码:1111 ... 010
补码:1111 ... 011
3
原码:011
反码:011
补码:011
1111 ... 011
0000 ... 011
1111 ... 110 补码(返回的数是负数 : 原码 = 补码取反+1)
# 给你补码求原码(用来显示数据)
补码:1111 ... 110
反码:1000 ... 001
原码:1000 ... 010 => -2
<===================>
9 + (-5)
9
原码:000 ... 1001
反码:000 ... 1001
补码:000 ... 1001
-5
原码:100 ... 0101
反码:111 ... 1010
补码:111 ... 1011
000 ... 1001
111 ... 1011
000 ... 0100 => 4 (正数 原码 == 反码 == 补码)
-9 + 5
-9
原码:100 ... 1001
反码:111 ... 0110
补码:111 ... 0111
5
原码:000 ... 0101
反码:000 ... 0101
补码:000 ... 0101
111 ... 0111
000 ... 0101
111 ... 1100 负数 (原码=补码取反加1)
给补码 -> 原码
补码:111 ... 1100
反码:100 ... 0011
原码:100 ... 0100 => -4
(反码的符号位不操作,补码的每一位都要计算)
4. python介绍
人生苦短,我学python
5. python注释
# 注释: 就是对代码的解释,方便程序员阅读代码,被注释的代码不执行.
# 1.注释的分类: 单行注释 , 多行注释
# 单行注释
# python2.x print "hello,world"
# python3.x print("hello,world")
# notepad: ctrl + q pycharm: ctrl + /
# 快捷键 : ctrl + z 撤销 ctrl + y 反撤销
# print("hello,world")
# 多行注释 ''' """
'''
print("书山有路勤为径,学海无涯苦作舟")
print("书山有路勤为径,学海无涯苦作舟")
print("生前何必久睡,死后自会长眠")
print("书山有路勤为径,学海无涯苦作舟")
print("养成吃苦耐劳的习惯,好好的学习python")
print("在未来,可以靠python大放光彩")
'''
"""
print("书山有路勤为径,学海无涯苦作舟")
print("书山有路勤为径,学海无涯苦作舟")
print("书山有路勤为径,学海无涯苦作舟")
print("书山有路勤为径,学海无涯苦作舟")
print("希望同学们养成吃苦耐劳的习惯,好好的学习python")
print("在未来,可以靠python大放光彩")
"""
# 2.多行注释的注意点
'''
如果里面嵌套的是三个单引号,外层使用三个双引号
如果里面嵌套的是三个双引号,外层使用三个单引号
单双引号要岔开
'''
'''
print("书山有路勤为径,学海无涯苦作舟")
print("书山有路勤为径,学海无涯苦作舟")
print("书山有路勤为径,学海无涯苦作舟")
print("书山有路勤为径,学海无涯苦作舟")
"""
print("希望同学们养成吃苦耐劳的习惯,好好的学习python")
"""
print("在未来,可以靠python大放光彩")
'''
"""
print("今天第一天")
print("第一天")
print("非常认真")
print("生前何必久睡,死后自会长眠")
'''
print("养成吃苦耐劳的习惯,好好的学习python")
'''
print("在未来,可以靠python大放光彩")
"""
# 3.注释具有一定的排错性
"""
先用注释包裹一份部分代码,查看是否报错
如果ok,缩小注释范围,再去一行一行进行排查,
直到找到错误为止,以此类推...
"""
"""
print("生前何必久睡,死后自会长眠")
print("生前何必久睡,死后自会长眠")
print("非常认真")
"""
print("生前何必久睡,死后自会长眠")
print("养成吃苦耐劳的习惯,好好的学习python")
print("在未来,可以靠python大放光彩")
# 其他语言的注释形式(了解)
"""
/* */ 多行注释
// 单行注释
<!-- --> html注释
"""
6. python变量
# ### 变量 : 可以改变的量就是变量,实际上指代的是内存的一块空间
# (1) 变量的概念
rujia305 = "赵万里"
rujia305 = "孟凡伟"
rujia305 = "康玉中"
print(rujia305)
# (2)变量的声明
# 1
a = 100
b = 101
print(a)
print(b)
# 2
a,b = 200,201
# print(值1,值2,值3, ..... ) 一行打印所有变量
print(a , b)
# 3
a = b = 300
print(a, b)
# (3)变量的命名
"""
变量的命名
字母数字下划线,首字符不能为数字
严格区分大小写,且不能使用关键字
变量命名有意义,且不能使用中文哦
"""
# abc123 = 1
# 123abdc error
________1_ = 1
# ___@@_ = 2 error
# a__________ = 90
# 1____ = 10 error
# 严格区分大小写
abc = 10
ABC = 11
print(abc) # 10
print(ABC) # 11
# 关键字 : 系统预设的相关属性和函数或者特殊意义的变量;
# 引入 模块(文件)
import keyword
# 模块.属性 (文件.变量)
print(keyword.kwlist)
"""
[
'False', 'None', 'True', 'and', 'as', 'assert',
'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except',
'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda',
'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while',
'with', 'yield'
]
"""
# 系统预设的相关关键字不能被替换覆盖,不要使用改名字作为变量名;
"""
print = 100
print(1)
"""
# 起名字要见名知意
mycar = "特斯拉"
youcar = "五菱宏光"
asldkfjaskldjfklasdjfklasjdklfjasdkl = "宝马" # 不推荐
# 中文命名变量不会报错的,但是严禁使用
中文 = "赵万里"
print(中文)
n = "赵万里"
print(n)
"""
(1) 字符编码:
中文命名的变量容易乱码;
utf-8(万国码): 一个中文占用3个字节,字母数字其他符号占用1个字节
gbk (国标码) : 一个中文占用2个字节,字母数字其他符号占用1个字节
(2) 占用空间:
中文命名变量比英文命名变量占用更大的空间.
"""
# (4)变量的交换
a = 18
b = 19
# 通用写法
tmp = a
a = b
b = tmp
print(a,b)
# python特有
a = 18
b = 19
a,b = b,a
print(a,b)
# (5) 常量 : 永远不变的量(约定俗成:把每个字母都变成大写)
BIRTHDAY = "1010"
ID_CARD = 210205200010106688