python取反
A. 我想问下python中 逻辑与:“&”和“and”的区别
1、“&”和“and”有本质区别,属于不同类型的运行符号。& 是位运算;and 是逻辑运算。
2、首先是&:该运输符属于字符串的连接运算符,例如,“w“&”c“结果为字符串”wc“。
3、and属于逻辑运算符,表示逻辑与运算,其规则是有假取假,全真为真。例如,true and false结果为false,true and true结果为true。
(1)python取反扩展阅读
Python的设计哲学是“优雅”、“明确”、“简单”。因此,Perl语言中“总是有多种方法来做同一件事”的理念在Python开发者中通常是难以忍受的。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。
在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确的没有或者很少有歧义的语法。
由于这种设计观念的差异,Python源代码通常被认为比Perl具备更好的可读性,并且能够支撑大规模的软件开发。这些准则被称为Python格言。在Python解释器内运行import this可以获得完整的列表。
Python开发人员尽量避开不成熟或者不重要的优化。一些针对非重要部位的加快运行速度的补丁通常不会被合并到Python内。所以很多人认为Python很慢。
不过,根据二八定律,大多数程序对速度要求不高。在某些对运行速度要求很高的情况,Python设计师倾向于使用JIT技术,或者用使用C/C++语言改写这部分程序。可用的JIT技术是PyPy。
Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。
Python支持重载运算符和动态类型。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools, itertools)提供了Haskell和Standard ML中久经考验的函数式程序设计工具。
虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrent,Google也广泛地使用它。
Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shellscript、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。
Python本身被设计为可扩充的。并非所有的特性和功能都集成到语言核心。Python提供了丰富的API和工具,以便程序员能够轻松地使用C语言、C++、Cython来编写扩充模块。Python编译器本身也可以被集成到其它需要脚本语言的程序内。
因此,很多人还把Python作为一种“胶水语言”(glue language)使用。使用Python将其他语言编写的程序进行集成和封装。在Google内部的很多项目,例如Google Engine使用C++编写性能要求极高的部分,然后用Python或Java/Go调用相应的模块。
《Python技术手册》的作者马特利(Alex Martelli)说:“这很难讲,不过,2004 年,Python 已在Google内部使用,Google 召募许多 Python 高手,但在这之前就已决定使用Python,
他们的目的是 Python where we can, C++ where we must,在操控硬件的场合使用 C++,在快速开发时候使用 Python。”
B. python中的if not 怎么用
python中的if not的用法说明如下:
1、if的语法为:if 条件为真:执行语句,而not是取反的意思。
2、从上面的解释可理解为:if not 条件为真:执行语句<==>if 条件不为真:执行语句。
3、举例:if n>3:print "True",假如n=3,就打印“True”。如果加上not,即为if not n>3:print “True”,就有:n<=3,才会打印“True"。
(2)python取反扩展阅读:
python中的“if not 1”:
if条件语句后面需要跟随bool类型的数据,即True或者False。然而,如果不是bool类型的数据,可以将其转换成bool类型的数据,转换的过程是隐式的。
在Python中,None、空列表[]、空字典{}、空元组()、0等一系列代表空和无的对象会被转换成False。除此之外的其它对象都会被转化成True。
在命令“if not 1”中,1便会转换为bool类型的True。not是逻辑运算符非,not 1则恒为False。因此if语句if not 1之下的语句,永远不会执行。
C. python中两个等号符号,怎么用键盘打出来
Python中提供了各种各样的运算符帮助我们解决各种实际问题。Python中的运算符主要包括算术运算符、比较运算符、位运算符、逻辑运算符和赋值运算符。下面将一一介绍这些运算符的具体种类和使用方法。
算术运算符
算术运算符帮助我们完成各种各样的算术运算,如加减乘除等。Python中的算术运算符的种类如下表所示:
下面在Python中演示一个例子看看其具体输出情况:
x = 7
y = 3
print(x+y)
print(x-y)
print(x*y)
print(x/y)
print(x**y)
print(x//y)
print(7.0/3)
print(7.0//3)
print(7//3.0)
print(7.0//3.0)
上面程序在Python自带的IDLE中的运行情况如下图所示:
比较运算符
比较运算符的作用是对变量或表达式的结果进行大小或真假的比较。其计算结果有两种:True或False。
下表中给出了Python中所有的比较运算符的形式以及其含义。
表中的x、y、a和b的取值:x = 7, y = 8,a = 4, b = 7
在Python3.8.2Shell中运行上面的例子,其结果如下图所示:
赋值运算符
Python中,变量无须定义,可以直接使用,即在使用时,可以直接把基本赋值运算符“=”右边的值赋给左边的变量,也可以进行某些运算后再赋值给左边的变量。
Python中的赋值运算符有两种形式:
(1)基本的赋值运算符,即单个“=”,其把右边的值或运算结果赋给左边的变量;
(2)复合的赋值运算符,即由算术运算符和“=”组合成的赋值运算符,其兼有运算和赋值的功能,如+=,相当于左边的操作数加上右边的操作数后,再赋值给左边的操作数。
在Python中常用的赋值运算符如下表所示。
在Python IDLE中使用上面赋值运算符操作的例子如下图所示:
上面的例子中要注意 c=-13,c //=3 这个结果,//相当于向下取整。
最后一个例子中x %= 3,由于前面运算完毕后,x的值为4.8,这里进行取模运算后,结果应该是1.8,但由于精度问题,显示成了图所示的结果。
逻辑运算符
Python有三种逻辑运算符:逻辑与,逻辑或和逻辑非。
一、基本用法
(1)and : 逻辑与
and运算需要两个操作数,如果参与运算的两个操作数都为True,则结果为True,否则运算结果为False。
b1 = True
b2 = True
b3 = False
b4 = False
print( b1 and b2)
print( b1 and b3)
print( b3 and b1)
print( b3 and b4)
其运行结果如下:
从运算结果可以总结出:如果and左侧操作数为False,则结果为False,否则为右侧操作数的值。
(2)or : 逻辑或
逻辑or运算也需要两个操作数,如果参与or运算的两个操作数有一个为True,则运算结果为True;两个操作数都False时,则返回结果False.
b1 = True
b2 = True
b3 = False
b4 = False
print( b1 or b2)
print( b2 or b3)
print( b3 or b4)
print( b3 or b1)
其运算结果如下:
可以看出,如果or左侧操作数的值为True,则结果为True,否则为右侧操作数的结果。
(3)not : 逻辑非
not只需要一个操作数,它对原值取反,即操作数为True时,非运算完后为False;原操作数为False时,非运算完后True。
b1 = True
b2 = False
print( not b1)
print( not b2)
其运算结果如下:
在Python中,逻辑运算符可以运用到非逻辑类型的数据中。
二、用于非逻辑数据类型
Python中,非0的数值类型被视为True,0被视为False;非空字符串被视True,空字符串被视为False。
1、and:逻辑与
(1)数字参与的运算
b1 = 2
b2 = 3
b3 = 0
print(b1 and b2)
print(b1 and b3)
print(b3 and b1)
其运算结果如下:
可以简单的概括为:如果and左侧为0,则结果为0,否则返回右侧操作数的值。
(2)字符串运算
s1 = "百家号"
s2 = "翔宇亭IT乐园"
s3 = ''
s4 = ''
print( s1 and s2)
print( s1 and s3)
print( s3 and s2)
print( s3 and s4)
其运算结果如下:
从运算结果可以简单总结:左操作数如果为空字符串,则返回空,否则为右侧操作数的值。
2、or:逻辑或
(1)数字参与的运算
b1 = 2
b2 = 3
b3 = 0
b4 = 0
print( b1 or b2)
print( b2 or b1)
print( b2 or b3)
print( b3 or b2)
print( b3 or b4)
其在Python3.8.2中的运算结果如下:
从上面的运算结果可以总结:如果or左侧的操作数是非0值,则返回左侧的数值,否则返回右侧操作数的值。
(2)字符串参与的运算
s1 = "翔宇亭IT乐园"
s2 = "biye5ucom"
s3 = ''
s4 = ''
print( s1 or s2)
print( s2 or s1)
print( s1 or s3)
print( s3 or s2)
print( s3 or s4)
其在Python3.8.2中的运算结果如下:
从上面结果可以总结:如果or左侧操作数为非空字符串,则返回左操作数的值,否则返回右侧操作数的值。
3、not:逻辑非
(1)有数字参与的运算
从上面可以看出:非0值取反后结果为False,0值取反后结果为True。
(2)有字符串参与的运算
从上面的运算结果来看:非空字符串取反后结果为False,空字符串取反后结果为True。
位运算符
位运算符也称二进制运算符,并且这些运算符只用于对整型数进行运算。
进行位运算时,整型数被转换为二进制形式,然后位运算符对每位执行有关运算后,将结果再转换回十进制形式,并返回给用户。
Python中共有6种位运算符:
(1)&:按位与运算
对应位上的二进制数进行与运算,如果参加位运算的两个二进制数为1,则结果为1,只要有一个为0,则结果为0,如10和4进行按位与运算,他们对应的二进制形式分别为:1010 和 100,则:
1 0 1 0
& 0 1 0 0
-----------
0 0 0 0
即10和4按位与运算的结果为二进制的0,也对应着10进制的0,最终结果即为0,即 10 & 4 = 0
再如,5和6进行按位与运算,其对应的二进制形式分别为: 101 和 110,
0 1 0 1
& 0 1 1 0
-------------
0 1 0 0
其运算结果为二进制的100,即十进制的4,也就是说: 5 & 6 = 4
在Python中的运行结果如下:
(2)按位或运算
按位或运算是二进制对应的每位进行或运算。如果对应的两位都为0,则结果为0,只要有一个为1,则结果为1。
10 和 4的或运算:
1 0 1 0
| 0 1 0 0
------------
1 1 1 0
其或运算的结果为二进制的 1110,对应着十进制的 14,即 10 | 4 = 14.
5 和 6的或运算:
0 1 0 1
| 0 1 1 0
------------
0 1 1 1
5 和 6的按位或运算结果为 0111,对应的十进制为 7 ,即 5 | 6 = 7.
在Python中的运行结果:
(3)按位异或运算
按位异或运算,即对应的两个二进制位不同时,结果为1,否则为0.
10 和 4 的按位异或运算:
1 0 1 0
^ 0 1 0 0
------------
1 1 1 0
即,结果为二进制1110,对应的十进制为14,亦即: 10 ^ 4 = 14
5 和 6 的按位异或运算:
0 1 0 1
^0 1 1 0
------------
0 0 1 1
0011对应的十进制数为3,也就是说: 5 ^ 6 = 3
在Python中的运行结果:
(4)按位取反运算符
该运算是单操作数运算符,即其只需要一个操作数参与运算。运算时,二进制数上的每位取反,即1变为0, 0变为1.
这里涉及到数字在计算机中的存储形式,在计算机中,最高位为符号位,符号位为0时表示正数,符号位为1时表示负数。
数字在计算机中是以补码的形式进行存储的,整数的补码与原码相同,负数的补码是在原码的基础上除符号位外,按位取反后,再加1.
如 +1,原码为0 0001,补码为 0 0001.
-1 ,原码为1 0001,补码为:1 1111。
再如:+2 ,原码为: 0 0010,补码为:0 0010.
-2,原码为:1 0010,补码为:1 1110
10按位取反运算(第1位为符号位):
~ 0 1 0 1 0
--------------
1 0 1 0 1
结果最高位为1,为负数,因为负数在计算机中以补码形式存储,转换为原码(先减1,再按位反)为:
1 1011
即对应的十进制数为 -11,即: ~10 = -11.
5 按位取反运算:
~ 0 0 1 0 1
---------------
1 1 0 1 0
结果对应的原码为: 1 0110,对应的十进制数为:-6
在Python中的运行结果:
(5)<<:按位左移运算符
其形式为:m<<n
按位左移运算,m对应的二进制数的每位向左移动n位,后面补0.
如10的二进制数 1010 向左移动两位后为:10 1000,其对应的十进制数为:40.
5的二进制数:0101,向左移动两位后为:1 0100,其对应的十进制数为:20
也就是说,一个整数左移n位相当于这个数 m×2n
在Python中的运算结果:
(6)>>:按位右移运算符
其形式为:m >> n
即m对应的二进制数每位向右移动n位,移出的二进制数字去掉,最左边空出的变为0.
10的二进制 1010 向右移动1位为:0101,即变为十进制的5;再移动1位变为0010,变为2,再移动1位变为0001,变为1,再移动就一直为0了。
即每向右移动1位,相当于原数除以2,只保留整数部分;移动n位,相当于原数除以2n,只保留整数部分。
在Python中的运算结果:
以上详细讲解了Python中各种运算符的使用方法,如果你对Python、R等感兴趣,欢迎关注我,本号将持续更新相关内容的文章。
D. python在通过opencv调用摄像头实时显示的时候如何取反色
感觉只能自己写个函数,把视频的每一帧图像按像素值计算。
E. python按位取反9为什么会得到-10计算步骤是什么啊
~9的计算步骤:
转二进制:0 1001
计算补码:0 1001
按位取反:1 0110
转为原码:1 0110
按位取反:1 1001 反码
末位加一:1 1010 补码
符号位为1是负数,即-10
规律:~x=-(x+1);
因此,t=~9(1001)并不能输出6(0110),而是-10;
F. 在python中为什么不能对字符取反
python 3的整型以16bit递增。
0xf0 =0b 0000 0000 1111 0000
~0xf0之后得到1111 1111 0000 1111
[1][111 1111 0000 1111]
确定是负数,有负数等于绝对值反码加一。求补码形式。
绝对值减1得:111 1111 0000 1110
反码得:000 0000 1111 0001
得-0xf1即-241(你那的~a[0]得-241)
要求得到[0,256),限定一下范围即可。
G. 请问python中为什么~True等于-2另外除了~还有没有其他取反操作符
去反是按位去反?那只有这个符号“~”
True是一个bit,bool型,按位去反会扩展成int型,True的默认值是1即0x0000_0001( 假设int为32位)
所以~True为0xffff_fffe, 也就是-2 ( 补码-2)
如果不是按位去反的操作可以直接用not, not True
H. python中按位翻转是什么意思 公式是~x = -(x+1) 不明白
就是按二进制位翻转而已,知道原码、反码、补码、移码吗?
是计算机基础课的内容,如果你都不知道,那就很难说了
简单的说例如1用32位二进制存储的结果是
这是二进制,不是十进制哦,那么求反,或者说按位求反,或者说按位翻转都一样,结果就是
1变0,0变1能理解吧?
那么-(x+1)是为什么呢,是这样假设x还是1,那么x+1就是
不要奇怪,这是二进制哦
那么取-呢,就是取负呢,一般计算机用补码,表示,补码的取负就是按位取反之后再加1,先取反结果就是
最后再加个1就是
是不是和1直接取反的结果一样?公式就是这样
但是如果你说你对补码原码一点概念都没有,这个你就会很难理解,建议去网络里面先学学,参考“参考资料”
I. 求python取原码、补码、反码的方法或函数
原码:原码是二进制数字的一种简单的表示法。二进制首位为符号位,1代表负,0代表正。
反码:反码可由原码得到。如果是正数,反码与原码相同;如果是负数,反码是其原码(符号位除外)各位取反而得到的。
补码:补码可由原码得到。如果是正数,补码与原码相同;如果是负数,补码是对其原码(除符号位外)各位取反,并在末位加1而得到的(有进位则进位,但不改变符号位)。
python有按位取反的操作符:~ 但是对负整数要小心操作,因为在计算机系统中,数值一律用补码来表示和存储的。