返回顶部
首页 > 资讯 > 后端开发 > Python >Python中如何实现真正的按位取反运算
  • 939
分享到

Python中如何实现真正的按位取反运算

python按位取反运算符python 按位取反python 取反 2023-02-07 18:02:32 939人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录运算代码实例说明补充:python的按位取反运算符的简单解析总结文章面向对象:对原理和编程不大有兴趣,只是需要用python实现一些运算功能的非计算机学生或从业者。大佬慎看防止血

文章面向对象:对原理和编程不大有兴趣,只是需要用python实现一些运算功能的非计算机学生或从业者。大佬慎看防止血压拉高

运算代码

x=~x&0xFF

num是一个不大于255的十进制正数(负数的我不需要,所以我也没研究)

计算结果也是十进制的数

&右边的0xFF会决定计算结果的比特位。如果要得到正确的计算结果,两边的数据比特位应该相同

例如1000对应的十六进制是0xFC17,16比特位的,这时候求反就应该改成

x=~x&0xFFFF

实例说明

例如求58的反:

当x大于255时,想要得到正确的数字,就要修改一下代码

把0xFF换成0xFFFF或者更高,取决于x这个数占用的比特位。

C语言基础会讲的知识,数据精度问题)

总之就是&两边的比特位要对应

**如果&右边保持为0xFF,但x大于了255,得到的结果则只有低位(如下图)
**

而实际上1000取反应该得到的十六进制表示是 ‘0xFC 17’

把完整的16比特位的FC17截断剩下17

(之所以这里用十六进制表示,是因为&右边对应的是16进制,这样看会更清楚。实际上取反运算是根据二进制表示运行的,那些也不重要,反正知道可以这样算就OK啦!)

补充:Python的按位取反运算符的简单解析

Python的按位取反运算符~的解释是:

对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1。

如a =61= 0b0011 1101,按位取反后的结果是:0b1100 0010=194,

可是Python中运算结果并非如此,

输出的~a的结果是:~a=62

这是怎么回事呢?

计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。

另外,求负整数的补码,将其对应正数二进制原码表示所有位取反(包括符号位,0变1,1变0)后加1

这里用括号来表示符号位,0表示正数,1表示负数。

a=61=(0)0b0011 1101,正数补码

~a=(1)0b1100 0010,负数补码,符号位为1表示这个代表一个负数,我们要知道其表示的数值。

对应负数原码到补码的转换过程:

(1)数值部分先减一:0b1100 0001

(2)数值部分取反:0b0011 1110,数值部分62

加上符号则~a =-62= (1)0b0011 1110,负数原码

总结

到此这篇关于Python中如何实现真正的按位取反运算的文章就介绍到这了,更多相关Python按位取反运算内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python中如何实现真正的按位取反运算

本文链接: https://lsjlt.com/news/194550.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中如何实现真正的按位取反运算
    目录运算代码实例说明补充:Python的按位取反运算符的简单解析总结文章面向对象:对原理和编程不大有兴趣,只是需要用python实现一些运算功能的非计算机学生或从业者。大佬慎看防止血...
    99+
    2023-02-07
    python按位取反运算符 python 按位取反 python 取反
  • php中如何进行按位运算
    本篇内容介绍了“php中如何进行按位运算”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、按位与(&)运算按位与运算是指将两个二进制...
    99+
    2023-07-06
  • Java如何实现位运算
    这篇文章主要介绍了Java如何实现位运算,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。public class Operation5 {publ...
    99+
    2023-06-02
  • Java中如何实现取模运算
    小编给大家分享一下Java中如何实现取模运算,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Java%(取模运算)Java的取模运算实现算法public ...
    99+
    2023-06-26
  • 详解Python中位运算的简单实现
    目录简介应用场景案例源码简介 程序中的数在计算机内存中都是以二进制的形式存在的,位运算就是直接对整数在内存中对应的二进制位进行操作,一般是将数字化为二进制数后进行操作。 应用场景 在...
    99+
    2024-04-02
  • 如何在Python中实现真正的switch-case语句
    这篇文章给大家分享的是有关如何在Python中实现真正的switch-case语句的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在 Python 中实现真正的 switch-case 语句。这是使用字典来模仿 s...
    99+
    2023-06-27
  • 如何在Python中实现avl树运算
    Python执行avl树,代码详情:import sys #创建树节点 class TreeNode(object): def __init__(self,key): self.key=key self.left=None se...
    99+
    2024-01-23
  • 基础的十进制按位运算总结与在Python中的计算示例
    与运算 & 举例: 3&5 解法:3的二进制补码是 11, 5的是101, 3&5也就是011&101,先看百位(其实不是百位,这样做只是便于理解) 一个...
    99+
    2022-06-04
    示例 基础 十进制按位
  • js位运算在实际中如何使用
    这篇文章主要介绍了js位运算在实际中如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇js位运算在实际中如何使用文章都会有所收获,下面我们一起来看看吧。什么是位运算从现代计算机中所有的数据二进制的形式存储在...
    99+
    2023-06-29
  • JavaScript如何实现双重非位运算简写
    这篇文章将为大家详细讲解有关JavaScript如何实现双重非位运算简写,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。双重非位运算简写有一个有效用例用于双重非运算操作符。可以用来代替Math.floor(...
    99+
    2023-06-27
  • python如何实现比较运算符
    这篇文章将为大家详细讲解有关python如何实现比较运算符,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现比较运算符如果我们要逐一为某个类实现所有的比较运算符,你肯定会...
    99+
    2024-04-02
  • 如何在C++项目中实现一个取余运算
    如何在C++项目中实现一个取余运算?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、C++中的整数除法C++中整数除法和取余用的是truncate除法(舍0取整),而给无符号类...
    99+
    2023-06-06
  • 如何用Python实现网页正文的提取
    这篇文章主要介绍了如何用Python实现网页正文的提取的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用Python实现网页正文的提取文章都会有所收获,下面我们一起来看看吧。一个典型的新闻网页包括几个不同区域...
    99+
    2023-06-02
  • Python中3元运算符的实现
    这是今天在温习lambda表达式的时候想到的问题,众所周知C系列语言中的 三元运算符(:)是一个非常好用的语句,关于C中的三元运算符表达式1?表达式2:表达式3那么在python应该如何实现呢,请看下面例子:答案是:X = (表达式1)an...
    99+
    2023-01-31
    运算符 Python
  • python如何实现比较运算符的方法
    这篇文章将为大家详细讲解有关python如何实现比较运算符的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现比较运算符的简单方法为一个类实现所有的比较相似(如 lt , le , gt , ge)是...
    99+
    2023-06-27
  • C#之如何实现真正的四舍五入
    目录C#实现真正的四舍五入C#简单四舍五入函数总结C#实现真正的四舍五入 C#中的Math.Round()直接使用的话,实际上是:四舍六入五取偶,并不是真正意义上的四舍五入。 例如 ...
    99+
    2023-05-18
    C#四舍五入 C#实现四舍五入 四舍五入
  • python字符串之间如何实现运算
    这篇文章给大家分享的是有关python字符串之间如何实现运算的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。说明当Python中的两个字符串可以大于(等于)或小于(等于)时,比较的是与字符串相对应的Unicode编...
    99+
    2023-06-20
  • python如何实现多个条件运算符
    这篇文章将为大家详细讲解有关python如何实现多个条件运算符,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。多个条件运算符两个可以在程序中组合两个或多个条件运算符,我们可以使用逻辑运算符。 但是,通过链接...
    99+
    2023-06-27
  • C语言如何使用移位实现乘除法运算
    这篇文章主要为大家展示了“C语言如何使用移位实现乘除法运算”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言如何使用移位实现乘除法运算”这篇文章吧。移位实现乘...
    99+
    2024-04-02
  • JavaScript中的7种位运算符是如何在实战中使用的
    本篇文章为大家展示了JavaScript中的7种位运算符是如何在实战中使用的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。位运算符操作符用于数值的底层操作,也就是操...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作