zoukankan      html  css  js  c++  java
  • 补码

    使用补码的好处

    使用补码的好处

    布布君:使用补码的好处是什么?

    小甲鱼:你应该先问补码是什么……

    布布君:补码是什么?

    小甲鱼:一个数在计算机中是以二进制的形式存放的,补码的发明是为了表示带符号数(整型)。

    布布君:我知道二进制左边的第一位叫“符号位”,用“0”表示正数,用“1”表示负数,也就是说十进制数 3 的二进制表示方式是 00000011(1个字节),而 -3 则可以表示为 10000011,对吗?

    小甲鱼:对一半,不对一半!

    布布君:(⊙o⊙)哦?

    小甲鱼:如果 3 表示为 00000011,-3 表示为 10000011,那请问 3 - 3 的值用二进制数应该如何表示?

    布布君:简单!3 - 3 == 3 + (-3) == 0。二进制就是 00000011 + 10000011 == 10000110,咦?怎么不是等于 00000000?

    小甲鱼:对嘛!补码的发明就是为了解决这个问题!

    布布君:所以补码就是先按位取反,然后 +1?

    小甲鱼:对的,正数的补码是其本身的二进制形式;负数的补码需要先将其绝对值按位取反,再 + 1。

      比如 -3,就是先将 10000011 按位取反(除了符号位),得到 11111100,再 +1 得到 11111101。

      这样就可以解决 3 + (-3) == 0 的问题了。

    布布君:00000011 + 11111101 == 100000000,也不等于 00000000 呀?

    小甲鱼:你看,00000011 + 11111101 == 100000000,这里的结果是 9 位,对于一个字节单元来说,这左边的 1 是“溢出”的了,会被自动舍弃,因此结果就变成了 00000000。

    布布君:哇塞,明白了,小甲鱼老师o(≧v≦)o~~好棒!

    小甲鱼:噢,是先人们厉害!

  • 相关阅读:
    通过按键实现LED灯的亮灭(含两种情况)
    让大疆去做测绘---航线规划软件APP
    GPIOLED配置、key、中断NVIC配置
    使用指针的指针对字符串排序
    使用指针输出数组元素
    使用指针创建数组
    求输出此日期是该年的第几天
    婚礼上的谎言/百元买白鸡
    使用指针的指针对字符串排序
    实例168 使用指针输出数组元素
  • 原文地址:https://www.cnblogs.com/nul1/p/10771203.html
Copyright © 2011-2022 走看看