现在我们知道补码是怎么来的了,也就是为了保证两个相反数对应二进制的和必须是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语言补码取反后什么意思,补码为什么取反加一相关推荐

  1. Crawler - 如何爬取列表后进行文章的爬取

    2019独角兽企业重金招聘Python工程师标准>>> 已知BUG:(version:5) 1-爬取后生成的XML默认编码是Java环境决定导入数据库可能出问题 方法修改xml编码后 ...

  2. c语言按位取反 补码,按位取反运算符,数值取反之后是反码,还是补码- -

    最佳答案 你的概念不正确,按位运算,只对内码进行操作,不管类型,而反码/补码是针对有符号整型的(符号位不变) 对负数按位取反,得到的是正数,它的符号位也会取反的 追问: 哦,内码是不是补码呢?-19的 ...

  3. C语言中 原码、反码、补码 以及 取反(单目操作符 ~ )

    欢迎大家评论区中指正呀,谢谢大家啦 文章目录 前言:必备知识 一.原码.反码.补码 1.原码 2.反码 3.补码 二.取反 (单目操作符 ~ ) 1.数值8 2.数值-8 三.负整数 的 原码.反码. ...

  4. 如何理解:先减1后取反和先取反后加1得到的结果是一样的,故仍可采用取反加1的方法,即对于机器数为负数,则有[X]原=[[X]补]补。

    对二进制数来说,先减1后取反和先取反后加1得到的结果是一样的,故仍可采用取反加1的方法,即对于机器数为负数,则有[X]原=[[X]补]补. 当然你也可以用先减1后取反的方法来求补码对应的原码. 对于求 ...

  5. 数组索引必须为正整数或逻辑值是什么意思_贪心算法:K次取反后最大化的数组和...

    ❝ 很多录友都反馈昨天的题目:贪心算法:跳跃游戏II 很难,这样我就放心了,哈哈,因为我刚刚讲解贪心的时候一些录友会建议我:贪心没有必要单独讲,直接讲动规就可以了.应该不少同学都会感觉就贪心嘛,有啥难 ...

  6. postgresql 遍历字符串数组_每日一道编程题(348):1005.K次取反后最大化的数组和...

    1005.K次取反后最大化的数组和 每日编程中遇到任何疑问.意见.建议请公众号留言或直接撩Q474356284(备注每日编程) 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引  ...

  7. 【LeetCode】Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和)

    这道题是LeetCode里的第1005道题. 题目描述: 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次. ...

  8. 贪心热门问题2:K 次取反后最大化的数组和

    我们说贪心算法很多解题思路是我们先看出来了,然后只是用代码实现而已,没有固定的套路.但是面试常考的贪心算法题目是非常有限的,因此我们的应对之道就是将常见的贪心题目都做一遍. 这个题就很典型: Leet ...

  9. 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划

    文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...

  10. LeetCode1005.Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和)

    1005.Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和) Description Difficulty: easy Example 1: ...

最新文章

  1. 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)
  2. 测试类异常Manual close is not allowed over a Spring managed SqlSession
  3. Android根据baidu Android定位SDK实现定位
  4. gradle编译出错:Execution failed for task #39;:app:compileTestDebugJava#39;.
  5. 中文名称:案例编程MOOK系列
  6. 看完师兄的代码笔记,我失眠了
  7. SEO中HTML标签权重列表
  8. QA专题阅读小组 | 每周一起读 #09
  9. Qt学习之路(51): QByteArray和QVariant
  10. Linux下ping命令、traceroute命令、tracert命令的使用
  11. 投入工作与生活幸福,并非简单对立
  12. P6647 [CCC 2019] Tourism
  13. 三星s8清除html查看器,三星Galaxy S8/S8+双清教程_怎么清理数据缓存和恢复出厂设置...
  14. 【转】Unity 对象池(Object Pooling)理解与简单应用
  15. 第三方打码平台超级鹰图文识别,md5算法加密
  16. 工业锅炉远程监控平台_工业物联网解决方案案例
  17. 如何免费制作小程序?
  18. android bitmap设置透明度,Android 设置图片 Bitmap任意透明度
  19. 保卫资金链:资金链的五种死法和五种活法
  20. 【Unity】从零使用Amplify Shader - 超简单2D外轮廓

热门文章

  1. 这届打工人,回家过年都这么难
  2. xshell网站打不开
  3. 全面解析用户故事地图
  4. 【教学类-10-01】20221025《空心图案4*2-有重复》( 随机图案拼贴)(大班主题《动物花花衣》)
  5. 窗体全部透明,控件不透明
  6. 火山PC-64位炫彩界面库调用试水-加载资源文件(UI教程)
  7. xmind 拖拽_思维导图,原来Xmind这么强大!
  8. 电脑无损分区大小调整
  9. ssh登录工具 putty 和 生成.ppk文件的puttygen工具 如何使用puttygen生成密钥
  10. 关于元器件选型需要注意的问题