首页 > 编程语言 >Java基础-原码、反码、补码的理解

Java基础-原码、反码、补码的理解

时间:2022-09-04 18:00:59浏览次数:61  
标签:10 0000 补码 反码 1111 Java 原码

注意,我们这里举列的原码和反码只是为了求负数的补码,在计算机中没有原码,反码的存在,只有补码。

 

一.原码

1>.正数的原码就是它的本身

  假设使用一个字节存储整数,整数10的原码是:0000 1010

2>.负数用最高位是1表示负数

  假设使用一个字节存储整数,整数-10的原码是:1000 1010

 

二.反码

1>.正数的反码跟原码一样

  假设使用一个字节存储整数,整数10的反码是:0000 1010

2>.负数的反码是负数的原码按位取反(0变1,1变0),符号位不变

  假设使用一个字节存储整数,整数-10的反码是:1111 0101

 

三.补码(再次强调,整数的补码才是在计算机中的存储形式。)

1>.正数的补码和原码一样

  假设使用一个字节存储整数,整数10的补码是:0000 1010(第三次强调:这一串是10这个整数在计算机中存储形式)

2>.负数的补码是负数的反码加1

  假设使用一个字节存储整数,整数-10的补码是:1111 0110(第三次强调:这一串是-10这个整数在计算机中存储形式)

 

四.在计算机中,为什么不用原码和反码,而是用补码呢?

  因为在使用原码,反码在计算时不准确,使用补码计算时才准确。

1>.使用原码计算10-10

         0000 1010  (10的原码)

    +        1000 1010   (-10的原码)

------------------------------------------------------------

         1001 0100  (结果为:-20,很显然按照原码计算答案是否定的。)

2>.使用反码计算10-10

      0000 1010  (10的反码)

    +   1111 0101  (-10的反码)

------------------------------------------------------------

      1111 1111  (计算的结果为反码,我们转换为原码的结果为:1000 0000,最终的结果为:-0,很显然按照反码计算答案也是否定的。)

3>.使用补码计算10-10

      0000 1010  (10的补码)

   +   1111  0110  (-10的补码)

------------------------------------------------------------

      1 0000 0000  (由于我们这里使用了的1个字节存储,因此只能存储8位,最高位(第九位)那个1没有地方存,就被丢弃了。因此,结果为:0)

 

五.小试牛刀

  有了上面的案例,接下来,我们来做几个小练习吧,分别计算以下反码表示的十进制数字是多少呢?

1>.0b0000 1111

  相信这个数字大家异口同声的就能说出它的答案是:15(因为正数的补码和原码一样)

2>.0b1111 1111

  计算过程:0b1111 1111(补码)------>0b1111 1110(反码)------>0b1000 0001(原码)

  将其换算成原码之后就可以得到最后的结果为:-1

3>.0b1111 0000

  计算过程:0b1111 0000(补码)------>0b1110 1111(反码)------>0b10010000(原码)

  将其换算成原码之后就可以得到最后的结果为:-16

4>.0b1000 0001

  计算过程:0b1000 0001(补码)------>0b1000 0000(反码)------->0b1111 1111(原码)

  将其换算成原码之后就可以得到最后的结果为:-127

标签:10,0000,补码,反码,1111,Java,原码
From: https://www.cnblogs.com/dollar/p/16655589.html

相关文章

  • 数据结构与算法【Java】05---排序算法总结
    前言数据data结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码。要学习好数据结构就......
  • 2022java-web一条龙工具安装
    @目录java安装java-jdk安装java环境变量配置java-eclipse工具安装Java-idea工具安装MySQL安装navicat安装tomcat安装maven安装配置本地仓库配置镜像配置jdk备忘~安装常见......
  • 2022java-web一条龙工具安装
    @目录java安装java-jdk安装java环境变量配置java-eclipse工具安装Java-idea工具安装MySQL安装navicat安装tomcat安装maven安装配置本地仓库配置镜像配置jdk备忘~安装常见......
  • Java-tomcat
    TomcatTomcat是一个免费的web服务器8080是tomcat的默认端口号(手动可更改)下载tomcat后各个文件的作用:bin:一些初始化脚本conf:配置文件lib:依赖的jar包logs:日志web......
  • java随笔(六)——对象序列化
    ObjectOutputStream(对象输出流,序列化)通过ObjectOutputStream可以将所需要存储的对象数据进行序列化再输出存储。例如:Students=newStudent("张三",19);ObjectOutput......
  • Java中的方法
    方法的定义定义方法的格式修饰符返回值类型方法名(参数类型){***}修饰符访问控制修饰符publicprivateprotected当父类声明为public时,子类必须为public当父类声......
  • 《Java编程思想》读书笔记(四)
    前言:三年之前就买了《Java编程思想》这本书,但是到现在为止都还没有好好看过这本书,这次希望能够坚持通读完整本书并整理好自己的读书笔记,上一篇文章是记录的第十七章到第十......
  • Java流程控制
    01用户交互Scanner我们通过Scanner类获取用户的输入。基本语法:Scanners=newScanner(System.in);通过Scanner类的next()或nextLine()方法来获取输入的字符串,再读......
  • JavaDoc注释
    生成API文档时的参数信息@author作者名@version版本号@since最早可使用的jdk版本@param参数名@return返回值@throws抛出异常生成自己的API说明文档使用CMD方......
  • 第十章-JavaScript 互操作性
    从C#调用JavaScript浏览器具有许多您可能希望在Blazor网站中使用的功能。例如,您可能希望使用浏览器的本地存储来跟踪某些数据。由于Blazor的JavaScript互操作性......