对Python中的~(按位取反)运算的理解

Python中如何实现真正的按位取反运算 到此这篇关于Python中如何实现真正的按位取反运算的文章就介绍到这了,微点阅读。 阅读详情
AI摘要

本文详细解析了Python中按位取反运算符~的工作原理,并解释了如何通过补码来理解运算结果,总结出了~n=-(n+1)的规律。

Python中的~(按位取反)运算的理解:

按照我平时的理解,当我使用~按位取反运算的时候,计算机会将操作数所对应的二进制表达式的每一个位进行取反计算,取反后所得到的值就是~按位取反的运算结果(这点没问题)

例如,假如我的计算机是32位的,我接下来要计算~5的值,计算过程如下:

5 的二进制表达式为:0000 0000 0000 0000 0000 0000 0000 0101

执行~运算,即~5后: 1111 1111 1111 1111 1111 1111 1111 1010,即结果为-6

以上过程没有任何问题,但我们如果忘记了负数的二进制表达方式,那么就会对这个结果产生疑问,为什么1111 1111 1111 1111 1111 1111 1111 1010表示-6,可能我们会以为它应该表示-10等等,所以,理解~按位取反的另一个关键就是理解1111 1111 1111 1111 1111 1111 1111 1010为什么表示-6,也即理解负数的二进制表达方式。

现在计算机普遍使用补码表示负数。知道一个数的补码,要求其值的方法是:首先看符号位也就是最左的一位,如果是1代表是负数(-)如果是0代码是正数(+),然后对该值取反再+1,得到其源码。

例如本例中得到的 1111 1111 1111 1111 1111 1111 1111 1010,其符号位(最左一位)是1,表明它表示的是负数,欲求其源码,需先对其取反,然后再加1:0000 0000 0000 0000 0000 0000 0000 0101 + 1 = 0000 0000 0000 0000 0000 0000 0000 0110,然后在得到的源码前加一个负号,即-0000 0000 0000 0000 0000 0000 0000 0110 = -6。以上便是对~按位取反运算以及负数的二进制表示的理解,不难发现,在求源码的时候,要将补码进行取反后再加1,然而这个补码原本就是之前由~运算时,对原来的操作数通过~按位取反而得来的,所以,此时在求该补码的源码时的取反操作,相当于将补码变回了原来的那个操作数,之后进行的加1操作就相当于对原来的操作数进行加1,只不过结果变成了他的相反数。

因此,可以总结出~按位取反的计算结论是:~n = -(n+1)

例如本例中,~5 = -(5+1),即~5 = -6



Python中实现数字按位取反 需要注意的是,按位取反操作会将二进制数的符号位也进行翻转,这可能会导致一些意想不到的结果。例如,在上面的示例中,原始数值为正整数,但是按位取反的结果却是负整数。因此,在做数字按位取反时,需要对结果进行特殊处理,以避免出现意外的错误。除了按位取反运算符,Python还提供了其他的按位运算符,如与运算符“&”、或运算符“|”和异或运算符“^”。在Python中,我们可以使用按位取反运算符“~”来实现数字按位取反的操作。按位取反运算符会翻转一个二进制数的所有位,包括符号位。Python中实现数字按位取反。 阅读详情

相关推荐

【Python 随练】学习使用按位取反操作符 ~

在本篇博客中,我们将介绍Python中的按位取反操作符的使用方法。按位取反操作用于对一个数的二进制表示进行位运算,并返回一个新的数值,每个位上的值取反。我们将通过详细的说明和代码示例来展示按位取反操作符的功能和用法。

繁依Fanyi的博客 1157

补码、反码、原码与python运算符~

** 在python种,~1=-2, ~60 = -61,这是为什么呢? ** 首先,~运算符在python中是按位取反的运算,1的二进制是 0000 0001,按位取反变为 1111 1110,二进制位中的最高位是符号位,1取反之后变成了负数,好,接下来介绍下补码、反码、原码, 计算机中正整数数原码、反码、补码都是一样的,而负整数就有区别了,反码是原码除最高位外其余所有位的逐位求反, 将反码加上1就得到补码。计算机中整数都是以补码形式储存的,所以上面的1111 1110是补码形式,为了直观表示1取反之后到

qq_41841073的博客 9001

Python中的位运算:了解不同运算符及其关系

在本文中,我们介绍了Python中常用的位运算符及其关系,并提供了相应的源代码示例。位运算是一种在计算机科学中常见的操作,它直接对二进制数的位进行操作。Python作为一种功能强大的编程语言,也提供了多种位运算符来执行这样的操作。本文将介绍Python中常用的位运算符及其关系,并提供相应的源代码示例。通过位运算符,我们可以对二进制数进行高效的位操作。但需要注意,位运算符在一般的应用程序开发中并不常见,通常用于特定的编程任务。需要注意的是,Python中按位取反运算符返回的结果是一个补码形式的整数。

CodeByte的博客 198

有关python 中有符号数 以及 ~1= -2 问题

今天写了示例小程序 print 'a\tb\ta&b\ta|b\ta^b\t~a\t' for a in range(2): for b in range(2): print '%d\t%d\t%d\t%d\t%d\t%d\t'%(a,b,a&b,a|b,a^b,~a) 然后输出了下,顿时感觉有斯巴达了,注意~a 这个列 a b a&b a|b a^b ~a 0 0

bluua1的专栏 6641

Agent测试框架Harbor指南

Harbor是一个AI Agent单元测试框架,用于自动化测试AI代理在容器环境中的任务执行能力。它支持18+种AI代理,通过沙箱隔离和自动验证机制评估任务完成情况。任务必须具有可编程验证的输出结果,适合代码、数据、系统等可量化任务,不适合创意写作等主观任务。Harbor采用CLI操作方式,核心架构包含Job管理、Trial执行和验证器三个层级,执行流程包括环境启动、Agent执行和结果验证。任务目录包含指令文件、配置文件、Docker环境定义和测试脚本等必需组件,通过测试脚本自动判断任务完成质量。

loo_Charles_ool的博客 1404

【技术解析】AlexNet——从ReLU到Dropout的深度学习关键突破

本文深入解析AlexNet在深度学习领域的关键突破,重点探讨了ReLU激活函数和Dropout技术的革命性应用。作为卷积神经网络的里程碑,AlexNet通过ReLU解决梯度消失问题,利用Dropout有效防止过拟合,为现代深度学习模型奠定了重要基础。这些创新技术至今仍在计算机视觉和自然语言处理等领域发挥重要作用。

weixin_33719619的博客 272

python-操作符相关介绍(二)

本文继续讲解Python操作符,涵盖一元减法与正号、按位求补(~)、幂运算(**)、比较运算符(含集合关系)、位移运算(<<, >>)及索引、分片操作。重点解析了数值在内存中的二进制表示与按位操作原理,强调运算符优先级与浮点数比较的陷阱,通过代码示例说明分片切片的灵活用法与常见误区,帮助理解底层逻辑与实际应用。

ttug22的博客 1267

学习 考证 帆软 FCP-FineBI V6.0 考试经验

参加这个学习班,认识了新朋友,可能是我职业生涯中的一次重要体验,其实大家想想 IT 和 医生一样都是需要终身学习的。只是医生学习周期更长但是回报率也更高。大家觉的呢?

小 tom的博客 6225

python按位取反(~)

Python中的~(按位取反)运算的理解: 按照我平时的理解,当我使用~按位取反运算的时候,计算机会将操作数所对应的二进制表达式的每一个位进行取反计算,取反后所得到的值就是~按位取反的运算结果(这点没问题) 例如,假如我的计算机是32位的,我接下来要计算~5的值,计算过程如下: 5 的二进制表达式为:0000 0000 0000 0000 0000 0000 0000 0101 执行~运算...

邹小驴 1万+

手把手教你学simulink(90.1)--直流电动机实例:基于Simulink的基本模型的直流电动机(DC Motor)建模

直流电动机(DC Motor)因其结构简单、控制方便和良好的调速性能,广泛应用于各种工业自动化、机器人技术、家用电器以及航空航天等领域。为了更好地理解和应用直流电动机的工作原理及其控制系统,本项目旨在通过Simulink对直流电动机进行基本模型的建模与仿真。

MHD0815的博客 439

树莓派 5 AI 套件(Hailo)示例

该用户自定义类作为输入传递给回调函数,该函数在管道输出上运行。它用于主程序与回调函数之间的通信。它对 hailo_rpi_common::app_callback_class 进行了扩展,并可根据应用程序的具体情况定制附加变量和方法。

机器人控制与仿真应用 4115

python中单目运算_Python中的位运算

Python中的位运算是程序设计中对位模式或二进制的一元和二元操作。按位运算就是把数字转换为机器语言---以二进制形式表示Python中的位运算有哪些?在Python中,按位运算符有左移运算符(<>)、按位与运算(&)、按位或运算(|)、按位取反运算(~)、异或运算符,其中按位取反运算符为单目运算符按位左移运算符(<在机器语言中,任何形式均以二进制的形式进行表示:举例:7...

weixin_39831991的博客 455

Test软件:Keysight二次开发_(3).安装与配置开发环境

在开始进行Keysight软件的二次开发之前,首先需要确保您的开发环境已经正确安装和配置。本节将详细介绍如何安装和配置必要的开发工具和依赖项,以便您能够顺利进行开发工作。

2401_87715305的博客 1413

Python 位运算

程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。 Python 中有6种位运算符:    ①&amp;:按位与运算符,参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0;    ②|:按位或运算符,只要对应的二个二进位有一个为1时,结果位就为1;    ③^:按位异或运算符,当两对应的二进位相异时,结果为1;    ④...

麦芽雪冷萃 1万+

MNI152 坐标空间和 fsaverage 坐标空间相互转换, 如已知fsaverage空间的坐标如何求MNI152 坐标?aparc.a2009s.annot转化到MNI152空间?

大多数神经影像学研究的结果是在体积(例如,MNI152)或表面(例如,fsaverage)坐标系中报告的。体积坐标系和表面坐标系之间的准确映射可以促进许多应用,例如将 fMRI 组分析从 MNI152 投影到 fsaverage 以进行可视化或从 fsaverage 投影静息状态 fMRI 分区对 MNI152进行新数据的体积分析。Wu et al., 2018 评估了三种在 MNI152通过模拟上述应用的 Colin27 和 fsaverage 坐标系:将组平均数据从 MNI152/Colin27 投影到

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 2966

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python位运算

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

qq_39084720的博客 449

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python位运算符_Python中的6种位运算符?

在Python中,按位运算符有左移运算符()、按位与运算(&)、按位或运算(|)、按位取反运算(~)、异或运算符,其中按位取反运算符为单目运算符 。运算符描述实例&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0(a & b) 输出结果 12 ,二进制解释:0000 1100|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。(a | b) 输出结果 6...

weixin_39683734的博客 497

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Python 位运算符

文章目录前言一,& 按位与运算符9&5可以转换成如下的运算:-9&5可以转换成如下的运算:使用 Python 代码对上面的分析进行验证:运行结果:二,| 按位或运算符9 | 5可以转换成如下的运算:-9 | 5可以转换成如下的运算:使用 Python 代码对上面的分析进行验证:运行结果:三,^按位异或运算符9 ^ 5可以转换成如下的运算:-9 ^ 5可以转换成如下的运算:使用 Python 代码对上面的分析进行验证:运行结果:四,~按位取反运算符~9可以转换为如下的运算:~-9可以转

梁辰兴的博客 572

python位运算符_Python运算符之位运算符

Python中的位运算符与其它语言中的位运算符作用相同。位运算符也称二进制运算符,并且这些运算符只用于对整型数进行运算。进行位运算时,整型数被转换为二进制形式,然后位运算符对每位执行有关运算后,将结果再转换回十进制形式,并返回给用户。Python中共有6种位运算符:(1)&:按位与运算对应位上的二进制数进行与运算,如果参加位运算的两个二进制数为1,则结果为1,只要有一个为0,则结果为0,如10和4...

weixin_39887926的博客 446

python位运算符_python运算符-位运算符的实际运用与深入分析

今天这篇文章我们来说说python运算符之中的python位运算符。虽然不是很常用但是还是要多多熟练一下。希望这篇文章能给阅读的你带来帮助。python位运算符:按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:下表中变量 a 为 60,b 为 13,二进制格式如下:a = 0011 1100b = 0000 1101-----------------a&b = 0000...

weixin_39796878的博客 185

python 基础学习 数据类型 运算符 布尔类型 输入输出 注释

# 单行注释 '''多行注释 在字符串定界符引号的前面加上字母 r(或 R),那么该字符串将原样输出,其中的转义字符将不进行转义 如: print(r"失望之酒\x0a 机会之杯") 输出:失望之酒\x0a 机会之杯 布尔类型 布尔类型 true(0) | false(非0,负数都算) 数据类型 输入输出 input()输入函数 age = int(input("请输入数字:")) 有返回值...

qq_42095701的博客 1093

chatgpt赋能python:Python波浪线:一个强大的符号和关键字

本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。

lvsetongdao123的博客 830

python之位运算,and , or

python之位运算,and , or 转自:http://hi.baidu.com/liberalwu/blog/item/a648ffeded36c44479f05575.html 位运算符号有:&(按位与),|(按位或),^(按位异或),~(按位取反),>>(右移

oatnehc的专栏 3808

python-位运算符

python-位运算符 运算符 描述 实例 & 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100 | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101 ^ 按位异或运算符:当两对应的二进位相...

crazty的博客 364

python学习笔记--运算符

& 按位与运算符 | 按位或运算符 ^ 按位异或运算符:当两对应的二进位相异时,结果为1 ~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。 << 左移动运算符:运算数的各二进位全部左移若干位,高位丢弃,低位补0。 >> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位 Python运算符优先级 ** 指数 (最高优先级) ~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) * / % // 乘,

qq_39487799的博客 193
上一篇: MDK软件Go TO Definition 'xxxxx' 时出现No Browese information available in'X:\...\...\output\'
Strive_Chuan
博客等级 码龄9年 17粉丝 3原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值