读本文前请首先搞懂  “反码”,“取反”,“按位取反(~)”,这3个概念是不一样的。

取反:0变1,1变0

反码:正数的反码是其本身,对于负数其符号位不变其它各位取反(0变1,1变0)

按位取反(~): 这将是下面要讨论的。

“~”运算符在c、c++、java、c#中都有,之前一直没有遇到这个运算符。

要弄懂这个运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二进制数在内存中是以补码的形式存放的。

另外正数和负数的补码不一样,正数的补码、反码都是其本身,既:

正数9:

原码为: 0000 1001

补码为: 0000 1001

反码为: 0000 1001

再例如: -2

求原码: 1111 0010 (前面4个1表示符号位)

求反码: 1111 1101 (符号位不变,其余各位求反)

求补码: 1111 1110 (符号位不变,末位+1)

所以-2在内存中存放为: 1111 1110

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

弄懂了上述情况后,如何计算就好办了

假设要对正数9按位取反——> (~9),计算步骤如下,

原码为 0000 1001,

反码为 0000 1001,

补码为 0000 1001,

对其取反 1111 0110(符号位一起进行取反,这不是反码更加不是最终结果,只是补码的取反仅此而已)

我们还需要把他转换成原码,因为是负数所以进行负数补码到原码的逆运算

先减1得反码: 1111 0101

取反得原码:1111 1010,(反码和原码是一个相对的概念,对反码取反就是原码。取反过程符号位是不变的哦)

前面4个1是符号位,1是负数,既得十进制:-10

不知道说的明不明白,这里步骤就是:

1. 先对正数求补码

2. 然后对补码取反,包括符号位

3. 最后进行一个补码求原码的过程,一定要搞清概念啊。

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

下面我们再反推计算 (~ -10)

-10的原码:1111 1010

-10的反码:1111 0101 (符号位不变)

-10的补码:1111 0110 (符号位不变,末位+1)

补码取反:0000 1001 (符号位一起取反)

这是一个正数,那么我们对其求原码就可得到最终结果?

因为正数的补码,反码,原码都是一样的 那我们的最终结果是 0000 1001 ,十进制是 9,这与我们前面推算出的结果吻合。

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

最后一个有趣的事实是:

1. 所有正整数的按位取反是其本身+1的负数

2. 所有负整数的按位取反是其本身+1的绝对值

3. 零的按位取反是 -1(0在数学界既不是正数也不是负数)

[cpp] view plain copy
  1. // 测试-1亿 到 1亿的所有整数  :)
  2. for (int i = 0; i <= 100000000;++i)
  3. {
  4. if (~i != -(i+1) )
  5. {
  6. __asm { cli }           // 汇编中断指令
  7. }
  8. if (i && ~(-i) != abs((-i)+1) )
  9. {
  10. __asm { cli }
  11. }
  12. }

按位取反的概念和计算方法相关推荐

  1. VAF,MAF,肿瘤纯度,MCF,CCF的概念和计算方法 (转载)

    VAF的概念和计算方法 VAF的全称是Variant Allele Frequency(变异等位基因频率)或Variant Allele Fraction(变异等位基因分数).简单来说就是在基因组某个 ...

  2. 【原码, 反码, 补码的基础概念和计算方法】

    数值在计算机中是以补码的方式存储的,在探求为何计算机要使用补码之前, 让我们先了解原码, 反码和补码的概念. 原码就是符号位加上数字的二进制表示, 即用第一位表示符号, 其余位表示值. 反码的表示方法 ...

  3. 钢绞线弹性模量怎么计算_预应力钢绞线的弹性模量概念及计算方法 - 新闻中心 - 湖南汇赢钢铁科技公司...

    在了解钢绞线弹性模量的计算方法之前,我们先来回顾下预应力钢绞线的概念.预应力钢绞线全称预应力混凝土用钢绞线,该产品主要用于预应力混凝土结构配筋用.如大跨度铁路和公路的桥梁.吊车梁.岩土锚固工程.多层工 ...

  4. 景深概念、计算方法与影响因素

    一.景深概念 "景深(Depth of Field,DOF),是指在摄影机镜头或其他成像器前沿能够取得清晰图像的成像所测定的被摄物体前后距离范围.而光圈.镜头.及拍摄物的距离是影响景深的重要 ...

  5. 光耦的CTR(Current Transfer Ratio)值概念及计算方法

                                         详解光耦的重要参数--CTR值 CTR电流传输比(Current Transfer Ratio):描述光耦控制特性的参数,即副 ...

  6. 10.1 二重积分的概念与性质

    学习目标: 学习二重积分,我会采取以下几个步骤: 了解基本概念:首先我会学习二重积分的定义及其意义,了解二重积分的性质和特点,以及二重积分的计算方法. 理解二重积分的几何意义:我会通过画图的方式,探究 ...

  7. 数学是一门逻辑性极强的演绎科学,只有对基本概念深入理解,对基本定理和公式牢牢记住,才能找到解题的突破口和切入点。

    考研数学备考目前已进入首轮复习阶段.此阶段考生要做的是全面整理基本概念.定理.公式,初步总结复习重点,把握命题基本题型,为强化期的复习打下坚实基础. 由于数学大纲一般变化不大,因此,虽然2003年考试 ...

  8. 逻辑与()、逻辑或(||)、按位与()、按位或(|)、按位异或(^)、按位取反(~)

    逻辑与(&&) 运算符两边的表达式的值都为true运算结果为true, 其余情况为false. 逻辑或(||) 运算符两边的表达式的值都为false运算结果为false, 其余情况为t ...

  9. 查全率与查准率的计算方法

    查全率和查准率的概念和计算方法 查全率概念: 查全率(R)是测量检索系统检出相关文献能力的一种尺度,指系统检出的相关文献数(w)与系统信息库中存储 相关文献数(x)之比,用公式可表示为 查全率计算方法 ...

最新文章

  1. 【2020 Fall】哥伦比亚大学最新《机器学习》课程
  2. zookeeper 启动显示started,jps查看进程却没有,解决方法
  3. java中map使用非系统类作为key
  4. Android内部存储改变读取权限
  5. 局部特征(6)——局部特征描述汇总
  6. Python爬虫开发:url中文字符编码的两种解决方式
  7. 软件设计模式—面向接口编程
  8. 入行嵌入式研发10多年,一位工程师悟出这些道理
  9. 服务器版Windows7系统,windows7服务器版本
  10. hive jdbc 访问 配置_Hive入门级教程(详细)
  11. 腾讯游戏人脸识别系统更新!刷脸的同时语音提示付款成功_游侠网 Ali213.net
  12. 解决phpcms V9 推荐位无法排序
  13. 计算机地图制图 知识总结
  14. 产品运营 第一章(黄有璨)
  15. PSP游戏开放环境的建立
  16. YII模板(前台显示)详细分析
  17. wx:if 与wx:else
  18. fixed 和setprecision()的用法
  19. 样本均值的分布及中心极限定理
  20. 推荐系统遇上深度学习(三十六)--Learning and Transferring IDs Representation in E-commerce...

热门文章

  1. 大疆精灵4与双目视觉智能导航系统
  2. couldnotfindartifactcom.orcale:ojdbc6:pom:11.2.0.1.0innexus-aliyun
  3. HTML/CSS/Js/Jquery/PHP网站0基础开发到大神系列【飞鸽学院】
  4. 如何用java让坦克发射子弹_java怎么制作坦克大战
  5. 什么是软文营销?为什么做软文营销?
  6. 加密文件的识别和破解工具,电子数据勘察取证实验室建设项目-掘密
  7. Excel数据透视和Python数据透视
  8. macmini 387 2k显示器尝试hidpi
  9. 计算机网络节点分为三类,计算机网络技术1—2——3章
  10. STM32电路设计之最小系统