美文网首页
零星知识点

零星知识点

作者: Chasingcar_501 | 来源:发表于2019-01-04 19:48 被阅读0次

一、原码、补码、反码

1.原码、补码、反码

机器数:一个数在计算机中的二进制表示形式。机器数是带符号的,第一位表征正负,0为正,1为负。比如+3,计算机字长为8位,00000011,-3是10000011
真值:因为第一个数为符号位,所以机器数的形式不等于真正的数值,所以为区别起见,将带符号位的机器数对应的真正数值成为机器数的真值。
例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1

2.原码、反码、补码的基本概念和计算方式

原码、反码、补码是机器存储一个具体数字的编码方式

  • 原码
    符号位加上真值的绝对值,如果是八位二进制,第一位是符号位

[+1]原 = 0000 0001
[-1]原 = 1000 0001
取值范围:[1111 1111 , 0111 1111]即[-127 , 127]
原码是人脑最易于理解的方式

-反码
正数的反码是其本身,负数的反码是符号位不变,其余各位取反
如果是负数的反码,看不出来数值的真实大小,需要先转为原码再计算

  • 补码
    正数的补码是自身,负数的补码是原码的符号位不变其余各位取反,再加一,相当于反码加一
    负数的真是数值也无法直接看出,需要先转为原码
2.为什么要使用原码、反码、补码

由于简化机器运算,所以机器只有加法没有减法。原码和反码都无法解决有负数的加法,因此出现了补码,以前出现问题的-0则不存在了.而且可以用[1000 0000]表示-128

(-1) + (-127) = [1000 0001]原 + [1111 1111]原 = [1111 1111]补 + [1000 0001]补 = [1000 0000]补

这就是为什么8位二进制, 使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127].因为机器使用补码, 所以对于编程中常用到的32位int类型, 可以表示范围是: [-231, 231-1] 因为第一位表示的是符号位.而使用补码表示时又可以多保存一个最小值.

相关文章

  • 零星知识点

    一、原码、补码、反码 1.原码、补码、反码 机器数:一个数在计算机中的二进制表示形式。机器数是带符号的,第一位表征...

  • iOS零星知识点 -03

    查看提示 pragma mark - 01 tableView的编辑状态 如果实现了这个方法,就自动实现了滑动删除...

  • iOS零星知识点 - 04

    查看提示 pragma mark - 01 UIView 的触摸事件处理 pragma mark - 02 手势识...

  • 几点个人想法随笔

    1.零星的知识点太多,我们要想办法把让碎片化的知识点分门别类,然后用线给串起来,这样知识就可以逐步成体系 2.成体...

  • React 知识复习

    今天重新看了一遍 React 的官方文档,复习下我所知的 React。 零星的知识点 引用 react 和 rea...

  • 零星

  • 零星

    西风是旧识,又把深闺闯。 同是故里凄凉客,夜听寒笛不舍休。 春风怎解冬阳瘦,不曾彷徨去或留。 你是我苦心拼凑的风景...

  • 零星

    《早》 破晓 天慢慢亮了 攒了两天的乌云一点点散去了 只留下参差各异的残影 蓝色的,白色的,红色的 五点十一分 我...

  • 零星

    天高天厚天意难, 山深山远山神忙。 风吹风拂风清凉, 我行我素我决然。

  • 零星

    《关于》 冈仁波齐的雪还没消, 喜马拉雅一边的旭日已经悬在了天上; 雅鲁藏布江的水奔流、奔流, 向着看不见的世界,...

网友评论

      本文标题:零星知识点

      本文链接:https://www.haomeiwen.com/subject/ptdhrqtx.html