位运算有很多化腐朽为神奇的操作,取相反数就位列其中,我们总是用【取反+1】来求相反数,就如同公式一样使用,可否曾仔细琢磨过其中的原理呢?

为什么【取反+1】是相反数?

在数学中,互为相反数的两数相加为0,同理,在计算机中也是如此,正数 + 负数 = 0(式子中的负数为整数的相反数),但在数字在计算机并不是按原码存储

延伸:

计算机并不将数字按原码表示和存储,有符号数和无符号数都有各自的表示和存储规则,总而言之,正数是按补码表示和存储(正数的补码为自身,即原码),负数是按照表示和补码存储,补码 = 反码 + 1 = ~原码 + 1。

反码:符号位不变,其他位取反。

再回到原定义,

正数(原码) + 负数(原码) = 0  《==》 正数补码 + 负数补码 = 0 《==》正数(原码)+ 负数补码 = 0 《==》 正数(原码)+ (负数反码 + 1) = 0

如图,以5与-5为例子

我们可以清楚发现,对5取反正好获得-5的反码,再+1即-5的补码

再继续推导

正数(原码)+ (~正数 + 1) = 0,即可推恒等式 负数(相反数) = ~正数 + 1

位运算获取相反数详解相关推荐

  1. 位运算和典型应用详解

    位运算的符号 与运算:& 或运算:| 异或运算:^ 非运算:~ 移位运算:>>和<< 一. 逻辑运算符 1. & 位与运算 1) 运算规则 位与运算的实质是将参 ...

  2. sizeof是c语言的一种运算符,C语言位运算和sizeof运算符详解

    位运算和sizeof运算符 C语言中提供了一些运算符可以直接操作整数的位,称为位运算,因此位运算中的操作数都必须是整型的.位运算的效率是比较高的,而且位运算运用好的话会达到意想不到的效果.位运算主要有 ...

  3. hurtworld正版社区服务器,《伤害世界hurtworld》正版盗版GM权限获取方法图文详解...

    <伤害世界hurtworld>正版盗版GM权限获取方法图文详解 2016-01-10 09:43:03来源:hurtworld吧编辑:评论(0) <伤害世界hurtworld> ...

  4. 啪啪三国2获取服务器信息,《啪啪三国2》怎么快速获取资源 资源快速获取方法途径详解...

    导 读 啪啪三国2:在啪啪三国2手游中有很多各种各样的玩法特色,游戏中有着非常多的资源需要获取,小伙伴们都知道该怎么快速获取资源?这里小编就给大家来介绍一下啪啪三国2资源快速获取方法途径详解,下面就一 ...

  5. Twitter-Snowflake,64位自增ID算法详解

    Twitter-Snowflake,64位自增ID算法详解 from: http://www.lanindex.com/twitter-snowflake%EF%BC%8C64%E4%BD%8D%E8 ...

  6. php get 返回源码,php源码 fsockopen获取网页内容实例详解

    PHP fsockopen函数说明: Open Internet or Unix domain socket connection(打开套接字链接) Initiates a socket connec ...

  7. crashdumpandroid_Android 中Crash时如何获取异常信息详解及实例

    Android 中Crash时如何获取异常信息详解 前言: 大家都知道,Android应用不可避免的会发生crash,无论你的程序写的多完美,总是无法完全避免crash的发生,可能是由于Android ...

  8. 转载 雨松mono Unity获取游戏对象详解(来自我的长微博)

    Unity获取游戏对象详解(来自我的长微博) 转载 自 雨松mono 本文固定链接: http://www.xuanyusong.com/archives/2768 转载请注明: 雨松MOMO 201 ...

  9. java8 方法引用详解_Java8中如何通过方法引用获取属性名详解

    前言 在我们开发过程中常常有一个需求,就是要知道实体类中Getter方法对应的属性名称(Field Name),例如实体类属性到数据库字段的映射,我们常常是硬编码指定 属性名,这种硬编码有两个缺点. ...

最新文章

  1. 万字长文带你了解蚁群算法及求解复杂约束问题【源码实现】
  2. ModelSim入门及Testbench编写——合理利用仿真才是王道
  3. Thinkphp3.23 关联模型relation方法不存在解决方法
  4. (~最新合集~)计算机网络谢希仁第七版 第二章课后答案
  5. oracle和mysql的安装教程_客户端安装和配置(1) - Oracle 10g 安装图解教程_数据库技术_Linux公社-Linux系统门户网站...
  6. CF--思维练习--CodeForces - 221C-H - Little Elephant and Problem (思维)
  7. 白领夫妇白手起家 6年赚得两房两车
  8. 韩顺平php视频笔记71 面向对象编程的三大特征2 访问修饰符 继承
  9. Java流程控制01 用户交互Scanner
  10. Mybatis学习记录(六)----Mybatis的高级映射
  11. python常用算法有哪些_python常见排序算法基础教程
  12. 【C++入门】C++ STL概述
  13. 磁性能测量-软磁材料的退磁方法
  14. html span向上对齐,css也能让span靠左布局
  15. Amazon SageMaker简直就是机器学习平台的天花板
  16. javax.mail实现收发邮件
  17. Shodan完全手册部分翻译(1)
  18. CAXA 电子图板 二次开发 功能定制
  19. 【数据结构】顺序表的创建、插入、删除、合并
  20. 什么是PHP高级工程师

热门文章

  1. 《数据分析核心知识点》.PPT
  2. React 系列教程
  3. 猎豹移动(金山网络)2015校园招聘(c++工程师)
  4. VMware安装Ubuntu详细教程(图文)
  5. iOS培训就业前景分析详解
  6. 开绕组永磁同步电机基本知识
  7. 安徽省继续医学教育学分
  8. termux写python教程_Termux 入门与实践
  9. 深度卷积神经网络演化历史及结构改进脉络-40页长文全面解读
  10. 2018年“铲屎官”研究报告    -- 男人不如狗,宠物市场了解一下