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.将源码转换为十进制真值
最新文章
- 在GridView隐藏字段
- redis使用watch完成秒杀抢购功能
- ASP.NET MVC中错误日志信息记录
- Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加
- CListCtrl 的应用
- Java压缩技术的学习
- CSS 实现底部固定
- android sdk tools 一览
- JSON以及Java转换JSON的方法(前后端常用处理方法)
- Windows 2003 防火墙开启后无法访问FTP解决办法
- Multithreading C++ Out of Core Sotring for Massive Data|多线程C++的大规模数据外部排序
- 使用Swagger2时遇到的问题
- 本地ssh key连接多个git账号
- python进制转换及变量
- fastjson总结
- [net]netcat 做网络端口监听
- 初试PyOpenGL一 (Python+OpenGL)
- 强大!HTML5 3D美女图片旋转实现教程
- 网络I/O模型--07Netty基础
- OutLook中添加Exchange失败问题
热门文章
- Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'kindergarten.n.stuMChkTime' which is not functionally dependent on columns in GROUP BY clause; this is in
- 一个机器绑两个IP可能存在的问题
- Faster async functions and promises
- nice -n 10 bash 和 chrt 10 bash 和 echo -17 >; /proc/PID/oom_score_adj
- log4j实现日志自动清理功能
- nginx报警:nginx: [warn] could not build optimal server_names_hash, you should increase either server_names_hash_max_size: 512 or server_names_hash_bucket_size: 64; ignoring server_names_hash_bucket_size
- vue的vuex在使用...mapState 和...mapGetter报错的解决方案
- flutter 中的搜索条实现
- ISO/IEC 9899:2011 条款6.7.1——存储类说明符
- VPB编译日志2