【Pytorch】取反操作符~在Pytorch和python中使用的比较
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,其是一个负数的补码。
那么如何将负数的补码转成十进制呢?
- 把补码“取反”,则有:0011 11 00 (又回来了)
- 把取反后的结果加1,则有0011 11 01
- 将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中使用的比较相关推荐
- Python ' ~ ' (取反) 操作符解释
首先你要明白的几个知识点: (1)在计算机里面,负数是以补码存储的 (2)原码求补码:取反,+1 (3)补码求原码:取反,+1 (4)取反操作是在原码上进行的! 实际的计算结果: ~4 = - ...
- python 取反操作符(~)
误人子弟呀 误人子弟,看了几篇博客,真的是坑 ~ : 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 .~x 类似于 -x-1 1.计算依据: ①正数的原码.反码.补码都是一样的 ...
- python集合类型的四种操作符_深入解析Python中的集合类型操作符
(1)标准类型操作符(所有的集合类型) 成员关系 (in, not in) 就序列而言,Python中的in和not in操作符决定某个元素是否是一个集合中的成员. 集合等价/不等价 等价/不等价被用 ...
- python操作符op_详解python中的 is 操作符
大家可以与Java中的 == 操作符相互印证一下,加深一下对引用和对象的理解.原问题: Python为什么直接运行和在命令行运行同样语句但结果却不同,他们的缓存机制不同吗? 其实,高票答案已经说得很详 ...
- python取整的几种方法,Python中取整的几种方法小结
Python中取整的几种方法小结 前言 对每位程序员来说,在编程过程中数据处理是不可避免的,很多时候都需要根据需求把获取到的数据进行处理,取整则是最基本的数据处理.取整的方式则包括向下取整.四舍五入. ...
- python 取数组最后一个_在Python中获取列表的最后一个元素
在Python中,你如何得到列表的最后一个元素? 为了得到最后一个元素, 不用修改列表, 假设你知道该列表有最后一个元素(即它是非空的) 传递-1给下标符号: >>> a_list ...
- C语言(算术、左移、赋值、位、sizeof计算大小、取反~、强制转换、条件)操作符..
1,算术操作符:+ - * / % float函数,浮点型,在9/2两边,显示小数任一一个数显示小数,结果都会显示4.5 int a = 9 % 2;//(取模,或者取余) printf(" ...
- python二进制取反_Python的二进制位运算
Python语言能够对整数进行逐位操作,它支持的运算符及含义如下所示: &:按位与 |:按位或 ^:按位异或 ~:取反 < >>:右移 对于整型数据,各种位操作是对该数据的补 ...
- oracle中取反_mysql 取反
云数据库 MySQL 云数据库(RDS for MySQL)是稳定可靠.可弹性伸缩的云数据库服务.通过云数据库能够让您几分钟内完成数据库部署.云端完全托管,让您专注于应用程序开发,无需为数据库运维烦恼 ...
最新文章
- LeetCode: 107. Binary Tree Level Order Traversal II
- C# 委托(Delegate) 事件(Event)应用详解
- Java 正则提取银行短信内容
- XCode 7.3.1(dmg) 官方直接下载地址
- python imagedraw line_修复PIL.ImageDraw.Draw.宽线条线条线条
- 【导航仿真】基于matlab GUI PSINS导航仿真【含Matlab源码 1496期】
- yota3无第三方recovery root方法
- Python视觉深度学习系列教程 第三卷 第11章 车辆识别
- 滤波器原理及其作用计算机网络,三种滤波器的工作原理
- latex插入pdf
- 蚂蚁金服面试题和答案
- 四、Python复习教程(重点)-爬虫框架
- numpy取数组中的行和列
- Linux ls命令大全
- 开箱即用的 SQL Server Docker
- LM358集成运算放大器的简易测量
- 密歇根大学计算机专业怎么样,密歇根大学安娜堡分校UMich计算机科学Computer Science专业排名第26位(2021年THE世界大学商科排名)...
- 新概念英语第一册——1-4笔记
- 计算机毕业设计Java毕业生就业管理系统(源码+系统+mysql数据库+lw文档)
- jupyter notebook 404错误