c语言补码取反后什么意思,补码为什么取反加一
现在我们知道补码是怎么来的了,也就是为了保证两个相反数对应二进制的和必须是0,然后又不知道谁给它起了补码这个名字。补码补码,有没有感觉两个相反数是互补的呢,也就是任意两个相反数加起来一定等0,其中一个数变大,另一个就一定会变小互补保证结果为0。但是你肯定还在纠结,为啥要按位取反,为啥还要加一呢。其实,这涉及到一个二进制减法的问题,你既然知道补码这个概念,就一定会知道有进位丢失这么个东西。现在我们知道了补码是怎么来的,也就是(00000000
-
其中一个正数的补码)=(这个数相反数的补码),那么我们知道了1的二进制是00000001,那么我们来求-1的补码,也就是应该00000000
-
00000001=?,我们该怎么计算这个二进制减法呢,而且还是一个小数减去大数,连借位都没地方借,前面我们提到进位丢失这个东西,那么我们来计算一个算式,11111111+00000001=?知道进位丢失的你,肯定知道加起来后等于00000000,虽然结果应该是100000000(后面是8个0),但是只能有8位,所以最高位的1丢失了,那么现在好了,也就是说,我们可以把00000000看做(11111111+00000001)因为他俩是相等的,我们已经计算过的了,那么我们现在就可以把前面讲的公式中的00000000换成(11111111+00000001),也就是我们要计算-1的补码,我们就0-1的编码,也就是00000000-00000001,也就是(11111111+00000001)-00000001=(-1的补码),这个算式我觉的你应该会计算了,大数减小数,到现在,或许你现在已经发现什么了,是的,你发现了之前一直迷惑你的一个东西,“按位取反再加一”,但是可能还有一点迷惑,我们继续,因为我们每次都是用一个0减去一个数的补码来得到另一个数的补码,也就是里面的(11111111+00000001)是不变的,因为它就是0,那么我们现在要求一个数的补码,就是(11111111+00000001)-
一个数的补码=它相反数的补码,咱们把括号去掉,也就是11111111 -
一个数的补码+00000001=它相反数的补码,这是加法交换法则,只是把位置交换一下,小学生都会的,然后呢再加个括号方便我们理解,也就是(1111111
- 一个数的补码)+00000001=它相反数的补码。好了,问题来了,(11111111 -
一个数的补码)的结果是什么,这个你心里应该是清楚的,你也可以算一下,它正好的等于它的反码,也就是按位取反的一个数,其实也好理解,你减几个数就看见规律了,描述好麻烦,现在好了,也就是(11111111
- 一个数的补码)=这个数的反码,也就是(11111111 -
一个数的补码)=把这个数按位取反,到现在,你应该你已经很清楚他是怎么来的了。
c语言补码取反后什么意思,补码为什么取反加一相关推荐
- Crawler - 如何爬取列表后进行文章的爬取
2019独角兽企业重金招聘Python工程师标准>>> 已知BUG:(version:5) 1-爬取后生成的XML默认编码是Java环境决定导入数据库可能出问题 方法修改xml编码后 ...
- c语言按位取反 补码,按位取反运算符,数值取反之后是反码,还是补码- -
最佳答案 你的概念不正确,按位运算,只对内码进行操作,不管类型,而反码/补码是针对有符号整型的(符号位不变) 对负数按位取反,得到的是正数,它的符号位也会取反的 追问: 哦,内码是不是补码呢?-19的 ...
- C语言中 原码、反码、补码 以及 取反(单目操作符 ~ )
欢迎大家评论区中指正呀,谢谢大家啦 文章目录 前言:必备知识 一.原码.反码.补码 1.原码 2.反码 3.补码 二.取反 (单目操作符 ~ ) 1.数值8 2.数值-8 三.负整数 的 原码.反码. ...
- 如何理解:先减1后取反和先取反后加1得到的结果是一样的,故仍可采用取反加1的方法,即对于机器数为负数,则有[X]原=[[X]补]补。
对二进制数来说,先减1后取反和先取反后加1得到的结果是一样的,故仍可采用取反加1的方法,即对于机器数为负数,则有[X]原=[[X]补]补. 当然你也可以用先减1后取反的方法来求补码对应的原码. 对于求 ...
- 数组索引必须为正整数或逻辑值是什么意思_贪心算法:K次取反后最大化的数组和...
❝ 很多录友都反馈昨天的题目:贪心算法:跳跃游戏II 很难,这样我就放心了,哈哈,因为我刚刚讲解贪心的时候一些录友会建议我:贪心没有必要单独讲,直接讲动规就可以了.应该不少同学都会感觉就贪心嘛,有啥难 ...
- postgresql 遍历字符串数组_每日一道编程题(348):1005.K次取反后最大化的数组和...
1005.K次取反后最大化的数组和 每日编程中遇到任何疑问.意见.建议请公众号留言或直接撩Q474356284(备注每日编程) 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 ...
- 【LeetCode】Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和)
这道题是LeetCode里的第1005道题. 题目描述: 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次. ...
- 贪心热门问题2:K 次取反后最大化的数组和
我们说贪心算法很多解题思路是我们先看出来了,然后只是用代码实现而已,没有固定的套路.但是面试常考的贪心算法题目是非常有限的,因此我们的应对之道就是将常见的贪心题目都做一遍. 这个题就很典型: Leet ...
- 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划
文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...
- LeetCode1005.Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和)
1005.Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和) Description Difficulty: easy Example 1: ...
最新文章
- 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)
- 测试类异常Manual close is not allowed over a Spring managed SqlSession
- Android根据baidu Android定位SDK实现定位
- gradle编译出错:Execution failed for task #39;:app:compileTestDebugJava#39;.
- 中文名称:案例编程MOOK系列
- 看完师兄的代码笔记,我失眠了
- SEO中HTML标签权重列表
- QA专题阅读小组 | 每周一起读 #09
- Qt学习之路(51): QByteArray和QVariant
- Linux下ping命令、traceroute命令、tracert命令的使用
- 投入工作与生活幸福,并非简单对立
- P6647 [CCC 2019] Tourism
- 三星s8清除html查看器,三星Galaxy S8/S8+双清教程_怎么清理数据缓存和恢复出厂设置...
- 【转】Unity 对象池(Object Pooling)理解与简单应用
- 第三方打码平台超级鹰图文识别,md5算法加密
- 工业锅炉远程监控平台_工业物联网解决方案案例
- 如何免费制作小程序?
- android bitmap设置透明度,Android 设置图片 Bitmap任意透明度
- 保卫资金链:资金链的五种死法和五种活法
- 【Unity】从零使用Amplify Shader - 超简单2D外轮廓