文章目录

  • 1、python 数据类型
  • 1.1、python 语言常用四种数据类型包括
  • 2、数据类型之间的转换
  • 2.1 、转型示例
  • (1)浮点型 float 转 int
  • (2) 字符串 str 转 int 型
  • (3)布尔型 Bool 转 int 型
  • 3、常用运算符
  • 3.1、算数运算符
  • 3.2、 赋值运算符
  • 3.3、关系运算符
  • 3.3、逻辑运算符
  • 3.3、位运算符


1、python 数据类型
1.1、python 语言常用四种数据类型包括

整型、浮点型、字符串、布尔型

Python基础之变量、数据类型和运算符_补码


我们可以通过 type() 获取变量或者值的类型属性,然年后通过 print 打印出来 如:

Python基础之变量、数据类型和运算符_数据类型_02


我们可以看到图中 对应的变量 或者值的数据类型 都是 int 型。

2、数据类型之间的转换

我们可以通过 如下的函数进行数据类型之间的转换

函数

转换类型

int ()

转换整数

float()

转换成浮点型

str()

转换成字符串

boo()

转换成布尔值

2.1 、转型示例
(1)浮点型 float 转 int

Python基础之变量、数据类型和运算符_数据类型_03


对于这段代码的 注释

a = 1.234        # 赋值变量 a 为 1.234
b = int(a)        # 通过 int () 函数 ,让变量转化成 int 类型 并且 赋值 给变量 b
print(a)           # 打印 变量 a 的值
print(type(a))  #  打印变量 a 的 数据类型
print(b)         # 打印 变量 b 的值
print(type(b))  # 打印 变量 b 的数据类型
(2) 字符串 str 转 int 型
b = "123456"
c = int(b)
(3)布尔型 Bool 转 int 型
b = True
c = int(b)
print(c)

运行结果: 1

3、常用运算符
3.1、算数运算符

Python基础之变量、数据类型和运算符_位取反_04

3.2、 赋值运算符

Python基础之变量、数据类型和运算符_位取反_05

3.3、关系运算符

Python基础之变量、数据类型和运算符_位取反_06

3.3、逻辑运算符

Python基础之变量、数据类型和运算符_位取反_07

3.3、位运算符

Python基础之变量、数据类型和运算符_补码_08

#按位与
print(1 & 2) # 0
'''
    01
  & 10
-----------
    00
'''

#按位或
print(1 | 2)  # 3
'''
    01
  & 10
-----------
    11
'''

#按位异或
print(3 ^ 5)  # 6
'''
    011
  & 101
-----------
    110
'''

#按位取反
print(~5) # -7
'''
Python中的~(按位取反)运算的理解:

按照我平时的理解,当我使用~按位取反运算的时候,计算机会将操作数所对应的二进制表达式的每一个位进行取反计算,取反后所得到的值就是~按位取反的运算结果(这点没问题)

例如,假如我的计算机是32位的,我接下来要计算~5的值,计算过程如下:

5 的二进制表达式为:0000 0000 0000 0000 0000 0000 0000 0101

执行~运算,即~5后: 1111 1111 1111 1111 1111 1111 1111 1010,即结果为-6

以上过程没有任何问题,但我们如果忘记了负数的二进制表达方式,那么就会对这个结果产生疑问,为什么1111 1111 1111 1111 1111 1111 1111 1010表示-6,可能我们会以为它应该表示-10等等,所以,理解~按位取反的另一个关键就是理解1111 1111 1111 1111 1111 1111 1111 1010为什么表示-6,也即理解负数的二进制表达方式。

现在计算机普遍使用补码表示负数。知道一个数的补码,要求其值的方法是:首先看符号位也就是最左的一位,如果是1代表是负数(-)如果是0代码是正数(+),然后对该值取反再+1,得到其源码。

例如本例中得到的 1111 1111 1111 1111 1111 1111 1111 1010,其符号位(最左一位)是1,表明它表示的是负数,欲求其源码,需先对其取反,然后再加1:0000 0000 0000 0000 0000 0000 0000 0101 + 1 = 0000 0000 0000 0000 0000 0000 0000 0110,然后在得到的源码前加一个负号,即-0000 0000 0000 0000 0000 0000 0000 0110 = -6。以上便是对~按位取反运算以及负数的二进制表示的理解,不难发现,在求源码的时候,要将补码进行取反后再加1,然而这个补码原本就是之前由~运算时,对原来的操作数通过~按位取反而得来的,所以,此时在求该补码的源码时的取反操作,相当于将补码变回了原来的那个操作数,之后进行的加1操作就相当于对原来的操作数进行加1,只不过结果变成了他的相反数。

因此,可以总结出~按位取反的计算结论是:~n = -(n+1)

例如本例中,~5 = -(5+1),即~5 = -6

'''

# 按位右移
print( 3 >> 1) # 1

'''    |
    011|
 >>  01|1
 --------------
     01
  
# 右移一位就是二进制码去掉一位
 A >> B 类似于
 A // (2 ** B)     
'''

# 按位 左移

print(3 << 1)  # 6

'''    |
    011|
>> 0110|
 --------------
   0110

# 右移一位就是二进制码去掉一位
 A << B 类似于
 A * (2 ** B)     
'''