位运算获取相反数详解
位运算有很多化腐朽为神奇的操作,取相反数就位列其中,我们总是用【取反+1】来求相反数,就如同公式一样使用,可否曾仔细琢磨过其中的原理呢?
为什么【取反+1】是相反数?
在数学中,互为相反数的两数相加为0,同理,在计算机中也是如此,正数 + 负数 = 0(式子中的负数为整数的相反数),但在数字在计算机并不是按原码存储
延伸:
计算机并不将数字按原码表示和存储,有符号数和无符号数都有各自的表示和存储规则,总而言之,正数是按补码表示和存储(正数的补码为自身,即原码),负数是按照表示和补码存储,补码 = 反码 + 1 = ~原码 + 1。
反码:符号位不变,其他位取反。
再回到原定义,
正数(原码) + 负数(原码) = 0 《==》 正数补码 + 负数补码 = 0 《==》正数(原码)+ 负数补码 = 0 《==》 正数(原码)+ (负数反码 + 1) = 0
如图,以5与-5为例子
我们可以清楚发现,对5取反正好获得-5的反码,再+1即-5的补码
再继续推导
正数(原码)+ (~正数 + 1) = 0,即可推恒等式 负数(相反数) = ~正数 + 1
位运算获取相反数详解相关推荐
- 位运算和典型应用详解
位运算的符号 与运算:& 或运算:| 异或运算:^ 非运算:~ 移位运算:>>和<< 一. 逻辑运算符 1. & 位与运算 1) 运算规则 位与运算的实质是将参 ...
- sizeof是c语言的一种运算符,C语言位运算和sizeof运算符详解
位运算和sizeof运算符 C语言中提供了一些运算符可以直接操作整数的位,称为位运算,因此位运算中的操作数都必须是整型的.位运算的效率是比较高的,而且位运算运用好的话会达到意想不到的效果.位运算主要有 ...
- hurtworld正版社区服务器,《伤害世界hurtworld》正版盗版GM权限获取方法图文详解...
<伤害世界hurtworld>正版盗版GM权限获取方法图文详解 2016-01-10 09:43:03来源:hurtworld吧编辑:评论(0) <伤害世界hurtworld> ...
- 啪啪三国2获取服务器信息,《啪啪三国2》怎么快速获取资源 资源快速获取方法途径详解...
导 读 啪啪三国2:在啪啪三国2手游中有很多各种各样的玩法特色,游戏中有着非常多的资源需要获取,小伙伴们都知道该怎么快速获取资源?这里小编就给大家来介绍一下啪啪三国2资源快速获取方法途径详解,下面就一 ...
- Twitter-Snowflake,64位自增ID算法详解
Twitter-Snowflake,64位自增ID算法详解 from: http://www.lanindex.com/twitter-snowflake%EF%BC%8C64%E4%BD%8D%E8 ...
- php get 返回源码,php源码 fsockopen获取网页内容实例详解
PHP fsockopen函数说明: Open Internet or Unix domain socket connection(打开套接字链接) Initiates a socket connec ...
- crashdumpandroid_Android 中Crash时如何获取异常信息详解及实例
Android 中Crash时如何获取异常信息详解 前言: 大家都知道,Android应用不可避免的会发生crash,无论你的程序写的多完美,总是无法完全避免crash的发生,可能是由于Android ...
- 转载 雨松mono Unity获取游戏对象详解(来自我的长微博)
Unity获取游戏对象详解(来自我的长微博) 转载 自 雨松mono 本文固定链接: http://www.xuanyusong.com/archives/2768 转载请注明: 雨松MOMO 201 ...
- java8 方法引用详解_Java8中如何通过方法引用获取属性名详解
前言 在我们开发过程中常常有一个需求,就是要知道实体类中Getter方法对应的属性名称(Field Name),例如实体类属性到数据库字段的映射,我们常常是硬编码指定 属性名,这种硬编码有两个缺点. ...
最新文章
- 万字长文带你了解蚁群算法及求解复杂约束问题【源码实现】
- ModelSim入门及Testbench编写——合理利用仿真才是王道
- Thinkphp3.23 关联模型relation方法不存在解决方法
- (~最新合集~)计算机网络谢希仁第七版 第二章课后答案
- oracle和mysql的安装教程_客户端安装和配置(1) - Oracle 10g 安装图解教程_数据库技术_Linux公社-Linux系统门户网站...
- CF--思维练习--CodeForces - 221C-H - Little Elephant and Problem (思维)
- 白领夫妇白手起家 6年赚得两房两车
- 韩顺平php视频笔记71 面向对象编程的三大特征2 访问修饰符 继承
- Java流程控制01 用户交互Scanner
- Mybatis学习记录(六)----Mybatis的高级映射
- python常用算法有哪些_python常见排序算法基础教程
- 【C++入门】C++ STL概述
- 磁性能测量-软磁材料的退磁方法
- html span向上对齐,css也能让span靠左布局
- Amazon SageMaker简直就是机器学习平台的天花板
- javax.mail实现收发邮件
- Shodan完全手册部分翻译(1)
- CAXA 电子图板 二次开发 功能定制
- 【数据结构】顺序表的创建、插入、删除、合并
- 什么是PHP高级工程师