zoukankan      html  css  js  c++  java
  • 【第二次JAVA课,java语法基础】原码、反码、补码

      首先是机器码这个概念,能储存信息一直是计算机的优点,但一直以来,计算机都是用二级制来表示一切数据,为了方便存储,必须要用合理的方式安排这些数据,所以要用到原码、反码、补码这三个概念。

    一切数据都是0和1

      原码是二进制的数据加上一个符号位,比如8位二进制中,

         [+1]原 = 0000 0001,

         [-1]原 = 1000 0001,

      这样就能表示一个byte的数据,就很方便。这样想要表示基本形式就只用相对位数的二进制就可以了。 但坏处是不好表示0,必须有两种 +0 和 -0 ,同时运算加减法不方便,所以有了补码。

    基本类型 占据空间大小 取值范围 默认值
    boolean 不确定 true/false 0
    byte 一个字节 -128----127 0
    int 4个字节 -2^31-2^31-1 0
    short 2个字节 -2^15-2^15-1 0
    long 8个字节 -2^63-2^63-1 0L
    char 2个字节   u0000
    float 4个字节 -2^128-2^128 o.oF
    double 8个字节 -2^1024-2^1024 0.0D

     

     

     

     

     

     

      

     

     

       反码的表示方法是:正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

       可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算。补码的存在就是解决了加减运算的问题。

     

      补码的表示方法,在正数时和原码一样,在负数时就是原码的各个位取反,然后最低位加1。使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。而且使用补码, 不仅仅修复了0的符号以及存在两个编码的问题,,而且还能够多表示一个最低数。 这就是为什么8位二进制,,使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127]。

    溢出问题

      计算机中的数值是以补码形式存储的,当给某个数据类型的变量赋值一个超出其范围的值,可以将其看称“两个此数据类型范围之内的值的和”,溢出的数据是从另一端的极值开始算的,转圈。

  • 相关阅读:
    HDU-1702-ACboy needs your help again!(Stack)
    HDU1276-士兵队列训练问题 (Queue)
    HDU1285-确定比赛名次(拓扑+优先队列)
    The Preliminary Contest for ICPC Asia Nanjing 2019
    拓扑排序板子 hihocoder-1174
    BZOJ1066 [SCOI2007]蜥蜴
    BZOJ3888 [Usaco2015 Jan]Stampede
    BZOJ1718 [Usaco2006 Jan] Redundant Paths 分离的路径
    BZOJ1112 [POI2008]砖块Klo
    BZOJ1031 [JSOI2007]字符加密Cipher
  • 原文地址:https://www.cnblogs.com/limitCM/p/9751372.html
Copyright © 2011-2022 走看看