“二十岁生日已经过了三年十个月,迷茫地走着自己弄不明白的道路
若有一日岁月蹉跎,我们变成了普普通通的大人
回首往昔时,能否笑颜如初”
这里是我身为python程序员的起点,我将把每日所学的知识、对人生的感悟放在这里
并以此为蓝图制作出记录我从零开始成长的视频。
学习编程不过是掌握一门技术,生而为人,更多的应该是领悟为人处世的道理,
感恩老师对我们的孜孜教诲,感恩同学们努力营造的学习气氛,感恩老男孩教育,
希望能在父母尚且精神饱满、无病无痛之时,身边不缺暖阳,也祝在座的各位心想事成,不负人生。
虽不如课上老师讲得尽善尽美,但也会更加精简,并参杂许多我个人的理解
b = bit 位(比特) # bit里只有二进制(由0、1组成)
B = Byte 字节
1Byte = 8 bit # 一个字节等于8位 可以简写成 1B = 8b
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
1EB = 1024PB
二进制:由2个数字组成,有0 和 1 格式为0b开头 例: 0b101
八进制:由8个数字组成,有0,1,2,3,4,5,6,7 格式为0o开头 例: 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)
格式为0x开头 例:0xff 0Xff 0XFF
*对应进制的最大个位数为该进制减1,例:八进制最大个位数为8-1=7,十六位最大个位数为16-1=f=15
#例: 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
注:如4^2指的是4的2次方,'^'号后是次方数
#例: 0o127
运算:7*8^0 + 2*8^1 + 1*8^2 = 7+16+64 = 87
#例: 0xff
运算:15*16^0 + 15*16^1 = 255
426 => 0b110101010
运算过程: 用426除以2,得出的结果再去不停地除以2,
直到除完最后的结果小于2停止,
在把每个阶段求得的余数从下到上依次拼接完毕即可
426 => 0o652
运算过程: 用426除以8,得出的结果再去不停地除以8,
直到除完最后的结果小于8停止,
在把每个阶段求得的余数从下到上依次拼接完毕即可
运算过程: 用426除以16,得出的结果再去不停地除以16,
直到除完最后的结果小于16停止,
在把每个阶段求得的余数从下到上依次拼接完毕即可
不难发现规律(仅十进制的转换):
N进制 => 十进制 = 个位数*N^0 + 十位数*N^1 + 百位数*N^2 +....
**十进制向N进制转换时(取余运算),要注意运算的最后两位的顺序,也就是N进制的开头两位,不要颠倒了,很容易出错
二进制与八进制对应关系:
八进制 二进制
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
心算快速转换要点:
着重记住0b100=0o4
如:0b100,111,010 (三个一分,脑内隔开)
对应 4 7 2 (参考上表,以0b100=0o4为中心快速转换别的数)
得 0o472
反过来转换亦然
十六进制 二进制
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
同理:
着重记住0b1000=0x8,0b100=0x4
如:0b100,1101,1010 (四个一分,脑内隔开)
对应 4 d a
得 0x4da
反过来转换亦然
这个就没什么难了,八转十六:八转二进制转十六。
十六转八也同上,以二进制为桥梁,反过来转换也是一样。
这方面知识了解即可,未来的用途可能不大,但也要透彻的的明白原理
# 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 给原码求补码
这里要划重点,涉及到python与其他语言属性优劣的知识
# ### (1)python 简介
89年开发的语言,创始人范罗苏姆(Guido van Rossum),别称:龟叔(Guido).
python具有非常多并且强大的第三方库,使得程序开发起来得心应手.
Python程序员的信仰:人生苦短,我用python!
开发方向: 机器学习人工智能 ,自动化运维&测试 ,数据分析&爬虫 ,python全栈开发
# ### (2)python 版本
python 2.x 版本,官方在 2020 年停止支持,原码不规范,重复较多
python 3.x 版本,功能更加强大且修复了很多bug,原码清晰,简单
# ### (3)编译型与解释型语言区别:
编译型:一次性,把所有代码编译成机器能识别的二进制码,在运行
代表语言:c,c++
优点: 执行速度块
缺点: 开发速度慢,调试周期长
解释型:代码从上到下一行一行解释并运行
代表语言:python,php
优点: 开发效率快,调试周期短
缺点: 执行速度相对慢
*linux 操作系统默认支持python语言,可直接使用
# ### (4)python的解释器:
(1)Cpython(官方推荐)
把python转化成c语言能识别的二进制码
(2)Jpython
把python转化成java语言能识别的二进制码
(3)其他语言解释器
把python转化成其他语言能识别的二进制码
(4)PyPy
将所有代码一次性编译成二进制码,加快执行效率(模仿编译型语言的一款python解释器)
# 注释: 就是对代码的解释/注释,程序员在代码里额外附加的说明书,不会对代码本身产生任何影响,方便读者理解程序的意义。
# (1)单行注释:
# 对单一一行文字进行注释,以#号开头,右边的所有东西都被当做说明文字,程序不进行编译运行
'''
(2)多行注释:
对多行文字进行注释,将文字以双引号或单引号包裹住
"""
并注意在嵌套注释时使用双引号、单引号区分嵌套内容
"""
'''
#先注释一部分代码,然后执行另外一部分,看看是否报错,逐层缩小报错范围,找到最终错误点。
#(个人理解):注释的排错性适用于没有良好的集成开发环境时的,不太复杂的程序
End
2020/4/28