20191031:Python取反运算详解
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取反运算详解的更多相关文章
- python/ORM操作详解
一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...
- python之数据类型详解
python之数据类型详解 二.列表list (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...
- python docopt模块详解
python docopt模块详解 docopt 本质上是在 Python 中引入了一种针对命令行参数的形式语言,在代码的最开头使用 """ ""&q ...
- python协程详解,gevent asyncio
python协程详解,gevent asyncio 新建模板小书匠 #协程的概念 #模块操作协程 # gevent 扩展模块 # asyncio 内置模块 # 基础的语法 1.生成器实现切换 [1] ...
- Python推导式详解,带你写出比较精简酷炫的代码
Python推导式详解,带你写出比较精简酷炫的代码 前言 1.推导式分类与用法 1.1 列表推导 1.2 集合推导 1.3 字典推导 1.4 元组推导?不存在的 2.推导式的性能 2.1 列表推导式与 ...
- Python 字符串方法详解
Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息. ...
- python time模块详解
python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明 一.简介 ...
- Python中dict详解
from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,pr ...
- Python开发技术详解(视频+源码+文档)
Python, 是一种面向对象.直译式计算机程序设计语言.Python语法简捷而清晰,具有丰富和强大的类库.它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结 ...
随机推荐
- VMware 下 Ubuntu 18.04 登录框消失解决
问题:ubuntu18卡在登陆界面,但是没有出现选择登陆用户的框,只有紫色屏幕 解决方法:参考VMware 下 Ubuntu 18.04 登录框消失解决记录
- Python: 在CSV文件中写入中文字符
0.2 2016.09.26 11:28* 字数 216 阅读 8053评论 2喜欢 5 最近一段时间的学习中发现,Python基本和中文字符杠上了.如果能把各种编码问题解决了,基本上也算对Pytho ...
- Apollo简介及项目集成
1. 产生背景 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关.参数的配置.服务器的地址…… 对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境.分集群管理配置,完善的权限 ...
- java MVEL2/Spring EL表达式、直接调用、反射性能实测
import java.io.Serializable; import java.lang.reflect.Field; import java.util.HashMap; import java.u ...
- Kubernetes addons 之 coredns部署
Kubernetes addons 之 coredns部署 2019.06.04 18:04:35字数 1045阅读 121 DNS 是 Kubernetes 的核心功能之一,通过 kube-dns ...
- jenkins持续集成springboot
1.可以配置项目标签 PS:这里Default Value值修改为master 2.代码地址,这里并没有拉取制定标签的代码,而是拉取了最新版本代码,如果要拉取指定标签代码需要把*/master修改成$ ...
- Flutter ListView 列表组件
列表常见的情况: 1.垂直列表 2.垂直图文列表 3.横向列表 4.动态列表 名称 类型 说明 scrollDirection Axis Axis.horizontal 横向列表 Axis.verti ...
- ISO/IEC 9899:2011 条款6.7.9——初始化
6.7.9 初始化 语法 1.initializer: assignment-expression { initializer-list } { initializer-list ...
- Java 并发基础常见面试题总结
1. 什么是线程和进程? 1.1. 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的.系统运行一个程序即是一个进程从创建,运行到消亡的过程. 在 Java 中,当我们启 ...
- Linux记录-limits.conf 配置
limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,而且只针对于单个会 ...