python取反函数 python取反运算

python中的按位取反运算

按位取反运算符:~

创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的牙克石网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

运算结果:~x=-(x+1)

例如:~9为-10

~(-9)为8

这不是按位取反吗?怎么结果是这样?

看下面。

转二进制:0 1001

计算补码:0 1001

要知道它所表达的数是多少,需要转换为原码

_____

转为原码:按位取反:1 1001

末位加一:1 1010

符号位为1是负数,即-10

转二进制:1 1001

计算补码:1 0111

要知道它所表达的数是多少,需要转换为原码____

转为原码:正数的补码和原码相同,仍为:0 1000,即8

Python中bool类型数组取反

在使用python数组时,可以根据一个相同长度的bool数组来做切片,比如:

但有时候我们想要反转这个索引,取出数组内其他元素该怎么办呢?

当然要把索引列表内的True变成False,False变成True。而python中not只能作用在标量上,而不能作用在数组上。

联想到True对应1,False对应0,那是否可以这么做:

结果是不行:

因为使用1-index后得到的是包含0和1的数组,据此做切片只能得到对应0和1索引处的元素。

真难!!!!orz

噫 这时再回顾一个前面的操作,考虑到True/False和1/0的对应关系,我们把True和False是转换成了1和0,从bool类型的角度,我们实现了True变成False和False变成True的目标,但是从数据类型上看,并没有做到,最终用的0和1表示。

数据类型!!!!

也就是结果只是数据类型不同,那转换下就好了:

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),限定一下范围即可。

(~a[0])0xff

15


当前标题:python取反函数 python取反运算
本文地址:http://ybzwz.com/article/dosjjch.html