python中的取反操作

在python中取反操作符~是对数字的二进制位进行取反,然后返回取反结果对应的十进制数字。这个可以参考:Python3运算符

使用案例如下:

num = 60
# 查看二进制
print(num, bin(num))  # 60 0b111100
num_ = ~num # -(x + 1)
print(num_, bin(num_))  # -61 -0b111101

细心的会发现,经过~处理后的结果并不是对应位置为相反关系。这就需要了解计算机是如何存储负数的了,负数通常是用其补码表示,正数的补码是其本身。假如这个整数是有符号8位(最高位是符号位,0表示正,1表示负)的,那么其对应的表示是:0011 1100,取反之后是:1100 0011,其是一个负数的补码。

那么如何将负数的补码转成十进制呢?

  1. 把补码“取反”,则有:0011 11 00 (又回来了)
  2. 把取反后的结果加1,则有0011 11 01
  3. 将2中的表示整数加上负号的结果就是这个补码实际的十进制数字了。

不难计算出上面的结果就是-61了。这也是为什么~的做相当于 - (x + 1)了。python中则是将负号单独拿出来,后面就是对应整数的二进制了,即61的二进制就是0011 1101.

除此之外,python中的True是数字1,False是数字0. 事例如下:

print(0 == False, 1 == True)  #  True True
print(~0, ~True) # -1 -2

取反运算符应用到pytorch中

bool类型的数字和非布尔类型的使用如下:

tensor_a = torch.tensor([True])
tensor_a_ = ~tensor_a
print(tensor_a)  # tensor([True])
print(tensor_a_)  # tensor([False])
tensor_b = torch.tensor([60])
tensor_b_ = ~ tensor_b
print(tensor_b)  # tensor([60])
print(tensor_b_)  # tensor([-61])

可以看出,在pytorch中对于bool类型的取反就是对True或False进行取反,这是与python中bool数据类型操作有所不同。

【Pytorch】取反操作符~在Pytorch和python中使用的比较相关推荐

  1. Python ' ~ ' (取反) 操作符解释

    首先你要明白的几个知识点:  (1)在计算机里面,负数是以补码存储的  (2)原码求补码:取反,+1  (3)补码求原码:取反,+1  (4)取反操作是在原码上进行的! 实际的计算结果: ~4 = - ...

  2. python 取反操作符(~)

    误人子弟呀 误人子弟,看了几篇博客,真的是坑 ~ : 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 .~x 类似于 -x-1 1.计算依据: ①正数的原码.反码.补码都是一样的 ...

  3. python集合类型的四种操作符_深入解析Python中的集合类型操作符

    (1)标准类型操作符(所有的集合类型) 成员关系 (in, not in) 就序列而言,Python中的in和not in操作符决定某个元素是否是一个集合中的成员. 集合等价/不等价 等价/不等价被用 ...

  4. python操作符op_详解python中的 is 操作符

    大家可以与Java中的 == 操作符相互印证一下,加深一下对引用和对象的理解.原问题: Python为什么直接运行和在命令行运行同样语句但结果却不同,他们的缓存机制不同吗? 其实,高票答案已经说得很详 ...

  5. python取整的几种方法,Python中取整的几种方法小结

    Python中取整的几种方法小结 前言 对每位程序员来说,在编程过程中数据处理是不可避免的,很多时候都需要根据需求把获取到的数据进行处理,取整则是最基本的数据处理.取整的方式则包括向下取整.四舍五入. ...

  6. python 取数组最后一个_在Python中获取列表的最后一个元素

    在Python中,你如何得到列表的最后一个元素? 为了得到最后一个元素, 不用修改列表, 假设你知道该列表有最后一个元素(即它是非空的) 传递-1给下标符号: >>> a_list ...

  7. C语言(算术、左移、赋值、位、sizeof计算大小、取反~、强制转换、条件)操作符..

    1,算术操作符:+ - * /  % float函数,浮点型,在9/2两边,显示小数任一一个数显示小数,结果都会显示4.5 int a = 9 % 2;//(取模,或者取余) printf(" ...

  8. python二进制取反_Python的二进制位运算

    Python语言能够对整数进行逐位操作,它支持的运算符及含义如下所示: &:按位与 |:按位或 ^:按位异或 ~:取反 < >>:右移 对于整型数据,各种位操作是对该数据的补 ...

  9. oracle中取反_mysql 取反

    云数据库 MySQL 云数据库(RDS for MySQL)是稳定可靠.可弹性伸缩的云数据库服务.通过云数据库能够让您几分钟内完成数据库部署.云端完全托管,让您专注于应用程序开发,无需为数据库运维烦恼 ...

最新文章

  1. LeetCode: 107. Binary Tree Level Order Traversal II
  2. C# 委托(Delegate) 事件(Event)应用详解
  3. Java 正则提取银行短信内容
  4. XCode 7.3.1(dmg) 官方直接下载地址
  5. python imagedraw line_修复PIL.ImageDraw.Draw.宽线条线条线条
  6. 【导航仿真】基于matlab GUI PSINS导航仿真【含Matlab源码 1496期】
  7. yota3无第三方recovery root方法
  8. Python视觉深度学习系列教程 第三卷 第11章 车辆识别
  9. 滤波器原理及其作用计算机网络,三种滤波器的工作原理
  10. latex插入pdf
  11. 蚂蚁金服面试题和答案
  12. 四、Python复习教程(重点)-爬虫框架
  13. numpy取数组中的行和列
  14. Linux ls命令大全
  15. 开箱即用的 SQL Server Docker
  16. LM358集成运算放大器的简易测量
  17. 密歇根大学计算机专业怎么样,密歇根大学安娜堡分校UMich计算机科学Computer Science专业排名第26位(2021年THE世界大学商科排名)...
  18. 新概念英语第一册——1-4笔记
  19. 计算机毕业设计Java毕业生就业管理系统(源码+系统+mysql数据库+lw文档)
  20. jupyter notebook 404错误

热门文章

  1. VB.NET操作WORD(VBA)
  2. 前端(Web)是什么?做什么工作?包括什么技术?
  3. MATLAB:图像裁切(imcrop函数)
  4. 出现报错qt disassembler ntdll DbgBreadPoint
  5. MYCNCART 自适应主题模板 MCCThemes-005
  6. Linux下黑白棋c语言程序,黑白棋的c语言代码
  7. 遗传算法优化matlab,遗传算法优化相关MATLAB算法实现
  8. 多项式插值拟合(二)
  9. 世界超级计算机比赛,世界大学生超级计算机竞赛 浙大打破世界纪录
  10. 《计算机体系结构》重要知识点