一、进制转换

计算机在内存中以二进制【0和1】的形式存储数据,在二进制的基础上,计算机还支持八进制和十六进制这两种进制
一个二进制表示一个比特(bit),也称为位,计算机处理数据的最小单位为字节【Byte】,1字节= 8位 ,比如:00101010
但是,我们生活中习惯使用十进制,所以当人与计算机之间进行交互的时候就要涉及到进制之间的转换
进制的表示有特定的符号集和进位制:
二进制:0和1,逢二进一
八进制:0~7
十进制:0~9,逢十进一
十六进制:0~9,a~f/A~F

1.进制转换原理

• 十进制 —》二进制
转换原理:对十进制数进行除2运算,直到商为0为止,然后将各个步骤得到的余数倒着写出来• 二进制—》十进制
转换原理:把二进制数按权展开、相加即得十进制数(位权,十进制的位权是10,二进制的是2)
0000 1010----》1 x 2(3) + 1 x 2(1) = 8 + 2 注意:()表示次方,2(3)表示2的3次方
0010 1010----》1 x 2(5) + 1 x 2(3) + 1 x 2(1) = 32 + 8 + 2
1001 0110-----》150• 二进制—》八进制
转换原理:三位二进制按权展开相加得到1位八进制数,从右向左开始分组,三位为一组,不足时补0• 二进制—》十六进制
转换原理:与二进制转八进制方法相似,八进制是取三合一,十六进制是取四合一,同样,二进制转成十六进制是从右向左开始分组,四位为一组,不足时补0• 十进制—》八进制或者十六进制
方法一:把十进制转成二进制x,然后再由二进制转成八进制或者十六进制
方法二:对十进制除以8或者16进行取余,直到商为0为止,类似十进制转二进制• 八进制或者十六进制—》十进制
转换原理:把八进制或者十六进制按权展开,相加即得十进制

2.整数表示

#1.计算机只能保存二进制,但是,为了方便计算,同时也支持八进制和十六进制
#2.二进制,十进制,八进制和十六进制在Python中都可以表示

#3.表示方式
#十进制
a = 42     #默认数字都是十进制

#二进制:用0b表示,b:bin
b = 0b101010

#八进制:用0o表示,o:oct
c = 0o46

#十六进制:
d = 0x69
d1 = 0x6a
"""
【自学内容:了解】
说明:
 八进制或者十六进制-----》十进制,可以以二进制作为中介
"""

3.代码实现进制转换

字节转化成文件 java 字节怎么转换成进制_十进制

a = 42   #十进制

print(bin(a))   #二进制
print(oct(a))   #八进制
print(hex(a))   #十六进制

二、数据类型转换进阶【掌握】

字节转化成文件 java 字节怎么转换成进制_十六进制_02

#1.int("xxx"),xxx可以由数字和正负号组成,但是,正负号只能出现在字符串的首位
#可以通过int将一个浮点型数字转化为整型,直接取整数部分
#注意:Python中True和False完全可以当做1和0进行使用
#2.str(xxx),xxx不管是什么类型的数据,最终都会被转化为字符串
=========================================================================
#3.float("xxxx"),xxx可以由数字,正负号和小数点组成,但是,正负号只能出现在字符串的首位,小数点可以任意
=========================================================================
#4.bool(xx),xx只要是代表“没有”的数据,转化之后的结果都是False
#0,0.0,“”,[],{}等代表空的数据通过转换之后都是False

三、输入输出进阶

1.输出print

import sys

#print(value...,sep,end,file,flush)

#1.基本用法
print(22,33,44,"aaa","fff")

#2.sep:分隔符,默认是空格,可以自定义【任意的字符,长度随意】
print(22,33,44,"aaa","fff",sep=" ")
print(22,33,44,"aaa","fff",sep="******")

#3.end:结束符,默认是\n,可以自定义【任意的字符,长度随意】
print("hello~~~111",end="\n")
print("hello~222",end="######")

#4.了解:file:文件,表示数据输出的位置,默认为sys.stdout,默认输出到控制台上,可以自定义
print(647328)
print(647328,file=sys.stdout)

#需求:将数据输出到一个指定文件中
#open(路径,标记),路径是指定数据需要输出的文件的位置,标记表示文件打开的方式,w表示write,【r表示read】
#f = open(r"file1.txt","w")
#print("尼古拉斯.赵四",file=f,flush=True)  #flush=True打开文件刷新,提高文件读写的速率
#关闭文件
#f.close()

#问题:文字乱码的问题,可以encoding设置编码格式,如果省略,默认 utf-8
f = open(r"file2.txt","w",encoding="gbk")    #注意:设定的编码格式需要和文件的编码格式保持一致
print("你好34343hjghajkhg",file=f)
f.close()

#5.格式化输出
"""
占位符
%s:表示任何类型的数据
%d:表示整型
%f:表示浮点型
"""

#字符串格式化:"自定义格式的占位符" % (数据。。。)
#注意:占位符和数据需要保持类型和数量的一致
data1 = "姓名:%s,年龄:%d" % ("张三",10)
print(data1)

data2 = "姓名:%s,爱好:%s" % ("张三","唱歌")
print(data2)

#data3 = "姓名:%s,年龄:%d" % ("张三","18")
#print(data3)  #TypeError: %d format: a number is required, not str


#%.nf,n表示保留小数点后n位,同时会进行四舍五入
#注意:如果省略n,则相当于获取整数部分,同样会进行四舍五入
data4 = "姓名:%s,身高:%.2f" % ("张三",175.5747577)
print(data4)

#%.nd,n表示数据的位数,如果不够补0,应用:13:04:30
data5 = "姓名:%s,身高:%.5d" % ("张三",8)
print(data5)

#注意:字符串进行格式化的时候,占位符的个数和格式都可以根据需求自定义

print("%s-%f-%d-%s" % (12,45.6,100,"abc"))

2.输入input

#注意:input表示输入,从控制台输入内容,程序会等待用户输入,
# 只有当用户输入,然后按下回车键,代码才会继续向下执行
# content = input("请输入内容:")
# print("获取到的内容:%s" % (content))


#练习:从控制台输入年龄,假设一个人的最长的寿命为150岁,计算还能活多少年?
# age = input("请输入你的年龄:")
# print("还能活%s年" % (150 - int(age)))
# print("还能活%d年" % (150 - int(age))

四、运算符和表达式

1.算术运算符

字节转化成文件 java 字节怎么转换成进制_八进制_03

a = 5
b = 3
print(a + b)
print(a - b)
print(a * b)
print(a / b)
# 取整
print(a // b)   #1
# 求余数
print(a % b)    #2
#求次方,求幂
print(a ** b)   #125  5的三次方
#结论:优先级的排序:**  >  *  /  //  %  > + -
print(2 * 5 ** 3)  #250
print((2 * 5) ** 3)  #1000
print(2 ** 5 * 3)  #96

2.赋值运算符

字节转化成文件 java 字节怎么转换成进制_十进制_04

 

 

#1.简单赋值运算符
num = 100
name = "abc"

#2.复合赋值运算符:算术运算符和简单赋值运算符组合而成
#作用:先对指定变量进行指定运算,将运算的结果给原变量进行重新赋值
a = 10
print("修改前:%d" % (a))
a += 1   #注意:a += 1等价于a = a + 1
print("修改后:%d" % (a))

b = 6
b *= 10   #b = b * 10
print(b)

c = 4
d = 24
#注意:/结果为浮点型
d /= c   #d = d / c
print(d)

3.关系运算符

字节转化成文件 java 字节怎么转换成进制_十六进制_05

 

 

#关系/比较/条件运算符:得到的结果都是布尔值【成立则得到True,不成立则得到False】

#1.数字之间
num1 = 10
num2 = 20

print(num1 == num2)
print(num1 != num2)

print(num1 > num2)
print(num1 < num2)

print(num1 >= num2)
print(num1 <= num2)

print("=========")

#2.字符之间的比较:遵循ASCII码
#"0":48      "a":97    "A":65
str1 = "a"
str2 = "8"

print(str1 < str2)  #False

4.逻辑运算符

字节转化成文件 java 字节怎么转换成进制_十六进制_06

#逻辑运算符:and,or,not
#1.逻辑与:and
"""
True and True = True
True and False = False
False and True = False
False and False = False
规律:一假为假,全真为真
假:0,0.0,False, "",[],{},None ,一切表示"没有"的数据都是假
注意:and的左边为False。可以不运算右边的表达式,整个表达式的结果直接为False
"""
print(1 and None)   #None
print(1 and print("11111~~~~"))
print(0 and print("22222~~~~~~"))
==================================================================
print(10 and 0)   #True and False   0
print(0 and 8)   #False and True   ""
print(0 and 0)   #False and False   ""
print("abc" and 8)  #True and True   8
==================================================================
#2.逻辑或
"""
True or True = True
True or False = True
False or True = True
False or False = False
规律:一真为真,全假为
注意:or的左边为真,则可以不进行右边表达式的计算,直接得到整个表达时的结果为真
""
print(0 or 8)  #8
print(0 or 0)  #0
print(10 or 0)   #10
print("abc" or 8)  #abc
#3.not
"""
not True = False
not False = True
注意:计算结果都是bool
"""
print(not True)
print(not 0)
print(not "abc")
#练习:从控制台输入一个数,判断该数是否能被4整除或者能被7整除
num = int(input("请输入一个数字:"))
print((num % 4 == 0) or (num % 7 == 0))

5.位运算符

6.运算符优先级

当出现一个复杂的表达式,有可能多种运算符会混合在一起运算,就会涉及到运算符的优先级。具体如下:

字节转化成文件 java 字节怎么转换成进制_八进制_07

注意:在实际项目开发中,当多种运算符进行混合运算时,强烈建议使用小括号来手动控制运算符的优先级,并且尽量将复杂的问题简单化,尽量分步执行