python按位取反_python赋值运算符

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170473.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何计算经纬度之间的距离_根据经纬度算距离

    如何计算经纬度之间的距离_根据经纬度算距离用php计算两个指定的经纬度地点之间的距离,代码:/***求两个已知经纬度之间的距离,单位为米*@paramlng1,lng2经度*@paramlat1,lat2纬度*@returnfloat距离,单位米*@editwww.jbxue.com**/functiongetdistance($lng1,$lat1,$lng2,$lat2){//将角度转为狐度$radLat1=deg2r…

    2022年9月2日
    6
  • 10个最新手机美食APP界面设计欣赏

    10个最新手机美食APP界面设计欣赏移动软件时代,简单下载美食app,动动手指,滑动几下手机屏幕,即可足不出户,搜索,预定和购买各路美食。然而,对于作为手机appUI界面设计师的你来说,最大的问题并不在于如何使用这些美食软件来方便生活,而是在于如何才能为各类餐厅,酒店,咖啡馆,水果以及饮料店设计出美观,舒适且简单易用的手机美食App,对吧?但是,已然为正在做的美食AppUI设计方案冥思苦想数小时或数天,却任然毫无头绪?究竟如何

    2022年6月19日
    77
  • 基于STM32的RFID-RC522门禁系统

    设计介绍这是一个基于STM32的RFID-RC522门禁系统,LCD1602显示当前状态,当检测到IC卡时,如果这个IC卡已经登记过,LCD1602上会显示IC卡的卡号,继电器打开,如果没有登记则报警。部分代码如下,需要源码的朋友可以在文章下方链接下载。#include”sys.h”#include”delay.h”#include”lcd.h”#include”led.h”#…

    2022年4月14日
    45
  • 带case操作的update语句_多个case when嵌套

    带case操作的update语句_多个case when嵌套1、场景:由于多次循环执行数据库操作是非常耗费性能的。因此,我们需要尽可能一条UPDATE语句更新多条数据。2、方式:casewhen拼凑UPDATE表名SET(目标字段)BRANCH_NO=CASEWHEN(筛选条件)BANK_BRANCH_ID=’-10212’THEN ‘TU32958123’WHENBANK_BRANCH_ID=’-10213’THEN ‘TU32958112’ELSE’测试’END,COMMENTS=CASEWH

    2025年9月21日
    8
  • 网络RJ45接口详解[通俗易懂]

    网络RJ45接口详解[通俗易懂]RJ45简介图1RJ45模块RJ45模块用于实现PHY之间的互连,包括PHY芯片经信号变压器与RJ45接口相连,如图1所示。RJ45连接器由插头和插座组成,RJ45插头又称水晶头,如图3-10所示。这两种元件组成的连接器连接于导线之间,以实现导线的电气连续性。RJ45连接器就是连接器中的最重要的一种插座。RJ45插座分屏蔽型和非屏蔽型两种。RJ是RegisteredJack的…

    2022年9月17日
    1
  • ftp客户端发起对ftp服务器_ftp登陆命令

    ftp客户端发起对ftp服务器_ftp登陆命令FTP是一个C/S类型的软件,连接服务端需要FTP客户端才能完成,常见的FTP客户端有以下几种:浏览器:可以通过浏览器中输入ftp://ip或者ftp://域名的方式3分钟了解计算机发展历史-组团学来访问FTP自带客户端:命令行下可以使用ftp命令去连接三方客户端:FileZilla8uftp图形软件或者文本界面的lftp等三种方式中,文本界面是比较麻烦的,无法鼠标流。所以我重点给大家讲解一…

    2022年10月21日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号