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.将源码转换为十进制真值

最新文章

  1. 在GridView隐藏字段
  2. redis使用watch完成秒杀抢购功能
  3. ASP.NET MVC中错误日志信息记录
  4. Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加
  5. CListCtrl 的应用
  6. Java压缩技术的学习
  7. CSS 实现底部固定
  8. android sdk tools 一览
  9. JSON以及Java转换JSON的方法(前后端常用处理方法)
  10. Windows 2003 防火墙开启后无法访问FTP解决办法
  11. Multithreading C++ Out of Core Sotring for Massive Data|多线程C++的大规模数据外部排序
  12. 使用Swagger2时遇到的问题
  13. 本地ssh key连接多个git账号
  14. python进制转换及变量
  15. fastjson总结
  16. [net]netcat 做网络端口监听
  17. 初试PyOpenGL一 (Python+OpenGL)
  18. 强大!HTML5 3D美女图片旋转实现教程
  19. 网络I/O模型--07Netty基础
  20. OutLook中添加Exchange失败问题

热门文章

  1. 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
  2. 一个机器绑两个IP可能存在的问题
  3. Faster async functions and promises
  4. nice -n 10 bash 和 chrt 10 bash 和 echo -17 > /proc/PID/oom_score_adj
  5. log4j实现日志自动清理功能
  6. 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
  7. vue的vuex在使用...mapState 和...mapGetter报错的解决方案
  8. flutter 中的搜索条实现
  9. ISO/IEC 9899:2011 条款6.7.1——存储类说明符
  10. VPB编译日志2