20191031:Python取反运算详解

取反运算:~3 == 4

1.对于数字 3 =======》转换为二进制表示为011

2.对011取反为100

3.为什么表示-4

a.计算机用补码表示负数,正数的补码为其本身,负数的补码为其反码+1,现在我们一家知道了100表示的是一个负数的补码,需要做的就是求出其原码,转换为十进制就是我们要求的结果

b.所以针对负数的补码求其原码具体过程如下:

i.如果补码最高位是0,则原码就是补码,如0110 的源码也是0110

ii.如果补码的最高位是1,则原码就是补码的反码+1,然后取相反数

011

001

-------------------------------------

100

以100为例:100的反码为011,011+1 ==100,100转换为十进制为4,取相反数为-4

===========================================================================================

反推:~-4 == 3

1.-4在内存中存储形式为100(存的是补码),根据前面b步骤表示负数补码求源码的过程,源码为反码011+1 = 100======》-4的源码为100

2.对-4的源码取反 011,011首位是0,表示正数,所以表示3

关键知识点:计算机在内存中存储数据是以补码的形式存储,所谓的取反运算是针对源码来计算的。

1.正数的,反码,补码为其本身

2.负数的,反码为其符号位不变,其他位取反

3.负数的,补码为其反码+1

4.负数的补码为其反码+1

===========================================================================================

总结:

计算机对一个数求反的过程

1.先求出其源码(因为内存中存的都是反码)

2.对源码进行取反运算

3.将取反以后的值转换为源码

4.将源码转换为十进制真值

20191031:Python取反运算详解的更多相关文章

  1. python/ORM操作详解

    一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...

  2. python之数据类型详解

    python之数据类型详解 二.列表list  (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...

  3. python docopt模块详解

    python docopt模块详解 docopt 本质上是在 Python 中引入了一种针对命令行参数的形式语言,在代码的最开头使用 """ ""&q ...

  4. python协程详解,gevent asyncio

    python协程详解,gevent asyncio 新建模板小书匠 #协程的概念 #模块操作协程 # gevent 扩展模块 # asyncio 内置模块 # 基础的语法 1.生成器实现切换 [1] ...

  5. Python推导式详解,带你写出比较精简酷炫的代码

    Python推导式详解,带你写出比较精简酷炫的代码 前言 1.推导式分类与用法 1.1 列表推导 1.2 集合推导 1.3 字典推导 1.4 元组推导?不存在的 2.推导式的性能 2.1 列表推导式与 ...

  6. Python 字符串方法详解

    Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息.        ...

  7. python time模块详解

    python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明  一.简介 ...

  8. Python中dict详解

    from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,pr ...

  9. Python开发技术详解(视频+源码+文档)

    Python, 是一种面向对象.直译式计算机程序设计语言.Python语法简捷而清晰,具有丰富和强大的类库.它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结 ...

随机推荐

  1. kafka集群搭建(图文并用)

    将安装包上传服务器并解压 scp kafka_2.11-1.0.0.tgz username@{ip}:~/. mkdir /usr/local/kafka mv kafka_2.11-1.0.0.t ...

  2. Fish Lang

    fish lang是一门基于函数的,可定制语法的编程语言. 为什么要设计fish这门语言 目前的编程语言语法都是固定死的,无法很容易的移除一种语法.fish语言一切语法由函数定义,语言只提供一个函数的 ...

  3. 微信公众平台开发教程Java版(三) 消息接收和发送

    https://www.iteye.com/blog/tuposky-2017429 前面两章已经介绍了如何接入微信公众平台,这一章说说消息的接收和发送 可以先了解公众平台的消息api接口(接收消息, ...

  4. DELPHI控件升级

    DELPHI控件升级 1)DELPHI里面卸载旧版控件: 2)WINDOWS里面卸载旧版控件: 3)删除旧版控件所在安装文件夹: 4)删除旧版的DCU,DCP,BPL文件: 5)安装新版控件: 6)程 ...

  5. iframe的src指向的内容不刷新

    想任何一种办法让iframe的src的值有变化就可以了 $("#h5Content").attr("src","${h5.url}"+&qu ...

  6. Fixed-Length Frames 谈谈网络编程中应用层(基于TCP/UDP)的协议设计

    http://blog.sina.com.cn/s/blog_48d4cf2d0101859x.html 谈谈网络编程中应用层(基于TCP/UDP)的协议设计 (2013-04-27 19:11:00 ...

  7. elementUI el-table合并单元格

    合并单元格,如果id列值一致,则合并. <el-table :data="tableData6" :span-method="objectSpanMethod&qu ...

  8. 解决:WdatePicker新增状态下只能取比当前月份大的月份,编辑状态下只能取比当前input里指定月份的月份大的值

    onclick="WdatePicker({ dateFmt: 'yyyy-MM', autoPickDate: true, minDate: this.value==''?'%y-#{%M ...

  9. Docker 容器日志分析

    查看容器日志 先使用  docker run -it --rm -d -p 80:80 nginx:1.15.8-alpine 命令启动一个nginx容器.如果没有异常,会得到容器ID如  d2408 ...

  10. flutter 中文件工具类

    添加依赖: path_provider: ^0.5.0+1 import 'dart:convert'; import 'dart:io'; import 'package:path_provider ...