• 00JAVA语法基础 原码、反码、补码


    记得之前学C语言的时候老师课上讲过一些,不过当时觉得考试不考,也就上课听了下,下课也没怎么多做了解。这次,Java课上再次提出来了,自己也超越了些资料,对这三种概念算是有所初步了解。

    1、原码

    数据储存的一种,就是以最高位储存符号(0为正数,1为负数),其他位储存数字(以二进制方式)

    例如:

    7 0000 0111
    -7 1000 0111

    2、反码

    正数的反码与原码一致,而负数的反码则是除最高位以外的数字全部相反(0换成1,1换成0)

    例如:

      7 -7
    原码 0000 0111 1000 0111
    反码 0000 0111 1111 1000

    3、补码

    正数的补码与原码一致,负数的补码是反码+1

    例如:

      7 -7
    原码 0000 0111 1000 0111
    反码 0000 0111 1111 1000
    补码 0000 0111 1111 1001

    在资料上也看到了一些测试方法,用原码计算10-10,即0000 1010(10的原码)   +   1000 1010 (-10的原码) = 1001 0100 (-20的原码),所以原码计算是不准确的;同样的反码也有类似的问题,如0000 1010(10的反码) +1111 0101(-10的反码)= 1111 1111(-0的反码),显然也是错误的,而补码就解决了这个问题,如 0000 1010(10的补码)+  1111 0110(10的补码)= 1 0000 0000  而只能储存八位,所以最高位就被舍弃了,就变成了0000 0000(0的补码)。

    在Java中用的就是补码的运算。

  • 相关阅读:
    开放平台架构指南
    绝了!起个好标题的9大技巧
    ASP已老,尚能饭否?
    离职,问题就解决了吗?
    什么是草台班子?
    回忆我的第一个软件项目
    Vue3中的Composables组合式函数,Vue3实现minxins
    Vue3中的teleport节点传送
    js中if逻辑过多,常见review优化
    QT安装
  • 原文地址:https://www.cnblogs.com/flw0322/p/9751154.html
Copyright © 2020-2023  润新知