一.首先了解计算机怎么存储负数
- 计算机用第一位为符号位(例如1 二进制为001 -1的就是101)那么如果我们直接计算的话就会的出1-1的话就是110那么就会得出-2这样就不对。
- 我们就使用了原码,反码,补码这一概念计算机底层都是用补码存储
二.补码的计算
- 原码反码补码的引入是为cpu解决负数计算
- 原码和反码都是为了计算补码,计算机底层都是补码!(重要!!)
- 正数的反码和补码都是本身,负数的原码得到补码的计算就是除了符号位,取反加一
- 101(原码) -> 100(-1得到反码) ->111(补码) 同样正数001的补码就是001。111和001计算得到000 结果正确! 当我们使用补码的时候就okle!
三.关于补码转换成原码
- 学校的题目通常会这样出通常如果题目给出的码如果不加声明就都是补码因为计算机底层都是补码
- 例如101(补码) 转成原码自然就是逆运算-1取反了 注意!笔者这里使用的是3个bit位(-4 ~ 3)所以会有所不同
四.关于127+1 = -128
- 我们使用一个byte时127的在计算机底层的补码就是0111 1111 这个就是127 那么我们加1的话就是1000 0000(补码)这个数当然就是-128了!
重要的是我们要知道计算机底层都是补码,这一引入是为了解决负数问题!
谢谢大家的支持!,有问题评论区问我ou!