七、 二进制位运算

判断一个 字符串在不在一个列表里

 1 name_list = [1,2,3,4,5,‘a‘,‘b‘,]
 2 name_list2 = [‘q‘,‘w‘,‘e‘,‘r‘,]
 3 #判断 4 是否在name_list2这个列表里
 4 w = 4 in name_list2
 5 e = 4 in name_list
 6 #如果存在则  返回Ture 如果不存在则返回 Fales
 7 print(w)
 8 print(e)
 9
10 ###加上判断包含的话
11 if 4 in name_list:
12     print("存在!")
13 else:
14     print("不存在...")
  • 元祖

元组和列表是一样的,元组是只读的,

列表是这个样子的:

1 [1,2,3,4,5,‘a‘,‘b‘,]

元组是这个样子的:

1 a = (1,2,3,4,5)

  • 查看元组的方法:
a = (1,2,3,4,5)
print(a)
print(dir(a))
------------------------------------------------------------------------------------
#输出:
(1, 2, 3, 4, 5)
[‘__add__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__getitem__‘, ‘__getnewargs__‘, ‘__gt__‘, ‘__hash__‘, ‘__init__‘, ‘__iter__‘, ‘__le__‘, ‘__len__‘, ‘__lt__‘, ‘__mul__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__rmul__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘count‘, ‘index‘]
------------------------------------------------------------------------------------
有以下两种方法:
count
index

由此可知,元组只可以做的事情列表都可以做,

  • 如果要把元组改成列表
 1 #定义一个元组
 2 a = (1,2,3,4,5)
 3 #打印一个元组
 4 print(a)
 5 #打印一个元组类型
 6 print(type(a))
 7 #把元组转换为列表
 8 ww = list(a)
 9 #打印列表
10 print(ww)
11 #打印列表类型
12 print(type(ww))
13 ------------------------------------------------------------------------------------
14 #输出:
15 (1, 2, 3, 4, 5)
16 <class ‘tuple‘>
17 [1, 2, 3, 4, 5]
18 <class ‘list‘>
  • 元组可以做切片索引的,但是如果要插入、删除、更改 是不可以的
  • 运算符:

首先 +-*/ 分别 等于 加减乘除 就不用说了

** 等于 多少次方

// 等于 地板除  取整除-返回商的整数部分小数点被去掉了

1 a = 5//2
2 print(a)
3
4
5
6 ------------------------------------------------------------------------
7 #输出:
8 2
  • == 比较两个对象是否相等
  • != 比较两个对象是否不相等
  • <>比较两个对象是否不相等,Python3中已经被废除了
  • > < = 分别是 大于 小于 等于 不用解释了
  • += 加法赋值运算符
  • -= 减法赋值运算符
  • *= 乘等于--乘法赋值运算符
  • /= 除等于-出发赋值运算符
  • %= 取摸赋值运算符
  • **=幂赋值运算符
# %返回除法的余数
a = 10%3
print(a)
------------------------------------------------------------------------------------
#输出:
1

#如果永远除以2,通过此方法可以盘点 奇、偶数
a = 10%2
b = 9%2
c = 8%2
print(a,b,c)
------------------------------------------------------------------------------------
#输出:
0 1 0
  • 位运算:

二进制只有0 和 1 组成

 1 192 换算为二进制
 2 168 换算为二进制
 3
 4 256    128    64    32    16    8    4    2    1
 5
 6 0    0    0    0    0    0    0    0    0
 7 0    1    1    0    0    0    0    0    0      [192]
 8 0    1    0    1    0    1    0    0    0    [168]
 9 #从左到右,第一个数字称作第一位,第个数组称作第二位,以此类推到第八个数字称作第八位, 八位数字称作一个字节
10
11 #一个字节可以表示255个数字
12 #1KB 就是 1024个字节
13 #1M 就是1024KB
14 #1G 就是1024M
15
16 #位运算就是可以直接进行二进制的
17 实际上 10*2,2*3 1+2  本质上还是进行的二进制的位运算
18 & 按位与运算符    |    (a&b)输出结果12,二进制解释器00001100
19 | 按位或运算符    |    (a|b) 输出结果61,二进制解释器0011110011
20 ^按位异或运算符    |    (a^b)输出结果49,二进制解释器001110001
21 ~按位取反运算符    |    (~a)输出结果-61,二进制解释器11000011,在一个有符号二进制数的补码形式.
22 <<左移动运算符    |    (a<<2)输出结果240,二进制解释器11110000
23 >>右移动运算符    |    (a>>2)输出结果15,二进制解释器00001111
24
25
26 下面来看:
27
28       256          128        64      32      16      8         4       2      1
29 --------------------------------------------------------------------------------
30 10    0                0             0         0         0        1            0        1         0
31 50    0                0             0         1         1        0            0        1         0
32 #与运算就是10 的二进制每一位与50的二进制每一位为真才叫与运算(上下对比 两个都为0是假,两个都为1是真)
33 &     0                0             0         0         0        0            0        1         0 = 2 对应的二进制位置 就是2
34 #所以  10 & 50  等于2,这就是与运算
35 --------------------------------------------------------------------------------
36 下面看 或运算,或运算 只要有一个为真那就为真(10|50 = 58)
37 |     0                0             0         1         1        1            0        1         0 =58 二进制对应位置相加 等于 58
38 --------------------------------------------------------------------------------
39 下面看异或运算,异或预算为 一真一假,就为真(10 ^ 50 = 56)
40 ^     0                0             0         1         1        1            0        0         0 = 56 二进制对应位置相加 等于 56
41 --------------------------------------------------------------------------------
42 右移一位,
43 移动之前:
44 10    0                0             0         0         0        1            0        1         0
45 移动之后(10>>1)
46 10    0                0             0         0         0        0            1       0         1 = 5 二进制对应位置相加 等于5
47 向左移动一位:(10<<1)
48 移动后
49 10    0                0             0         0         1        0            1        0         0 = 20 二进制对应位置相加等于20
  • 逻辑运算符:
 1 and 布尔“与” - 如果X为    False,x  and    y返回False,否则他返回y的计算值
 2 a = "cmd"
 3 b = "aa"
 4 if a == "cmd" and b == "aa":
 5     print("两个条件都满足了.......")
 6 ------------------------------------------------------------------
 7 #输出:
 8 两个条件都满足了.......
 9
10 or  布尔“或”-如果X是True,他返回True,否则它返回y的计算值
11 a = "cmd"
12 b = "aa"
13 if a == "cmd" or b == "bb":
14     print("满足了一个条件.......")
15 ------------------------------------------------------------------
16 #输出:
17 满足了一个条件.......
18 not 布尔"非"-如果x为True,返回False,如果X为False,它返回True
19 a = "cmd"
20 b = "aa"
21 if a not in  "bb" or b not in a:
22     print("a 不等于bb,b 也不等于 a")
23 ------------------------------------------------------------------
24 #输出:
25 a 不等于bb,b 也不等于 a
  • 成员运算符描述:
 1 in    如果在指定的序列中找到值返回True,否则返回False.
 2 not in 如果在指定的序列中没有找到值返回True,否则返回False.
 3
 4 身份运算符;
 5 is    is是判断两个表示服是不是引用自一个对象
 6 例:
 7 判断一个列表是否是列表
 8 a = [1,2,3,4,5]
 9 ww = type(a)
10 if type(a) is list:
11     print("True")
12 else:
13     print("False")
14 ------------------------------------------------------------------
15 #输出:
16 True
17 ------------------------------------------------------------------
18 ww = type(a)
19 if type(3) is list:
20     print("True")
21 elif type(3) is int:
22     print("是一个int......")
23 else:
24     print("False")
25 -----------------------------------------------------------------
26 #输出:
27 是一个int......
时间: 2024-12-12 08:31:18

七、 二进制位运算的相关文章

[C++基础]原码/反码/补码、二进制位运算

原码/反码/补码 编码 定义 实例 原码 最高位为符号位,"0"表示正,"1"表示负,其余位表示数值的大小. [+100]原=01100100 [+0]原=00000000 [-100]原=11100100 [-0]原=10000000注意:在原码中,零有两种表示形式. 反码 正数的反码与其原码相同:负数的反码是对其原码逐位取反,但符号位除外. [+100]反=01100100 [+0]反=00000000 [-100]反=10011011[-0]反=1111111

二进制位运算

1.  数的原码补码转换 计算机运算中,数都是由补码表示的.正数的补码就是原码:负数的补码就是各位(包括符号位)取反,再加上1.假设数是8位的,最高位为符号位.1的补码是0x00000001,-3的补码是0xFFFFFFFD. 如果由补码转化为原数:正数不变:负数的补码是各位(包括符号位)取反,再加上1得到负数的绝对值,再贴上符号.补码0x00000010的数是1,补码0xFFFFFFE4的数的绝对值是000111002=2810,则该数是-28. 下面代码的输出是-30: 1 #include

人造奇迹——二进制位运算的运用

最后更新:2014年4月30日 1.位运算包括: 这个我觉得大家都会我就随便说下: 位与&,如 101 & 110 = 100 位或|,如 100 | 110 = 110 位非~,如 ~101 = 010 位异或^,如 101 ^ 110 = 011 左移<<,如 011 << 1 = 110 右移>>,如 110 >> 1 = 011 其中,负数位运算的时候,用的是补码而不是原码请注意. 左移的时候,高位溢出的将会被舍弃,低位补0.如 11

二进制位运算几个常用的技巧

1. 奇数偶数 对于一个正整数的二进制,如果是偶数,那么最低位一定是0,相反如果是奇数,最低位一定是1.比如4(0100),3(0011)等等.因此通过对一个整数的二进制最低位的可以判断其是奇数还是偶数. 对正整数a,判断奇偶可以通过(a&0x1)来判断,是1则是奇数,是0则是偶数. 将一个奇数转成比他小的偶数,(a&-2). 2. 右移1(>>1) a>>1其实就是a/2:

第七章 JVM体系结构与工作方式

JVM能跨计算机体系结构来执行Java字节码,主要是由于JVM屏蔽了与各个计算机平台的软件和硬件之间的差异. 7.1 JVM体系结构 7.1.1 何谓JVM 模拟一个计算机来达到一个计算机所具有的计算功能. 以计算为中心来看计算机的体系结构可以分为如下几个部分. 指令集    计算机能识别的机器语言的命令集合. 计算单元  能够识别并且控制指令执行的功能模块. 寻址方式  地址的位数,最小地址和最大地址范围,以及地址的运行规则. 寄存器定义 包括操作数寄存器,变址寄存器,控制寄存器等的定义,数量

2015.8.5 循环与函数、位运算

注意点: 1.只有整形才可以用switch. 2.case后面的常量不可以重复 3.default语句可以放在任意位置,但是后面不可以省略break: while: 1.用来处理一些重复执行的操作 2.确定循环终止的条件 (1)在循环开始之前,需要定义一个循环控制变量并将其初始 (2)确定循环的约束条件 (3)在每一次循环结束的时候,在循环中,要去改变循环控制变量的值,让它不间断接近约束条件 注意点: 1.在c语言总任何树枝都有真假性,只有0为 假,其它都为真 2.注意不把==和=混淆了,为了避

POJ--2570--Fiber Network【floyd+位运算】

题意:一些公司决定搭建一些光纤网络,单向的,如果从第一点到第二点,有ab两个公司可以搭建,第二点到第三点有ac两个公司可以搭建,第一点到第三点有d公司可以搭建,则第一点到第三点有a.d两个公司可以搭建,a是通过第二点,d是直接连接两点.现在给你这么一个光纤网络,问某两点之间有哪些公司可以搭建起网络. 首先这题是个多源点的,有点像最短路的思想,如果让我做我肯定硬着头皮找相同的字母,不过我看到图论书里的想法很好,就写上来了. 因为公司是用一个小写字母来标识的,且每个公司的标识互不相同,也就是说最多只

位运算 F Alice and Bob

题目传送门 1 /* 2 题意: 求(a0*x^(2^0)+1) * (a1 * x^(2^1)+1)*.......*(an-1 * x^(2^(n-1))+1) 式子中,x的p次方的系数 3 二进制位运算:p = 2 ^ i + 2 ^ j + 2 ^ k + ...,在二进制表示下就是1的出现 4 例如:10 的二进制 为1010,10 = 2^3 + 2^1 = 8 + 2,而且每一个二进制数都有相关的a[i],对p移位运算,累计取模就行了 5 */ 6 #include <cstdio

java笔记2

1      关键字 1.1    关键字的概述 Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名.方法名.类名.包名. 1.2    常见的关键字 备注:不必死记硬背,如果使用关键字作为标识符,编译器能提示错误. goto 是java的保留关键字,意思是java并没有使用goto,以后是否使用未定. 2      标识符 2.1    什么是标识符 就是程序员在定义java程序时,自定义的一些名字,例如helloworld 程