java原码补码反码关系解析

 更新时间:2020年02月04日 09:20:29   作者:cf8833  
这篇文章主要为大家详细介绍了java原码补码反码的关系,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文为大家解析了java原码补码反码的关系,供大家参考,具体内容如下

原码:不管源数据是十进制还是十六进制,统统将数字转成二进制形式

反码:把原码的二进制统统反过来,0变成1,1变成0

补码:负数的反码加1,就是负数的补码

例子1:

十进制整数 -5,-5的原码101,-5的反码1,010,-5的补码1,011, 
所以,-5的反码是-2,-5的补码是-3,其中前面的"1,",表示正数负数

例子2:

十六进制  -ff9B  
原码  11111111111110011011
反码  00000000000001100100    十进制100
补码  00000000000001100100   十进制101
原来正确的操作流程是,把16进制ff9B转成2进制,然后直接反码,再算补码,就是温度数据

代码验证:

package comtest.example.admin.znum;
 
/**
 * Created by wrs on 2019/6/5,16:25
 * projectName: Testz
 * packageName: comtest.example.admin.znum
 * 输入一个真值(整数)求它的原码,反码,补码
 */
 
 
import java.util.Scanner;
 
 
public class Test {
 public static void main(String[] args) {
 System.out.println("True value--> original code");
 System.out.println("Please enter an integer!!!!!");
 Scanner sc = new Scanner(System.in);
 int value = sc.nextInt();
 StringBuilder syuan = new StringBuilder();
 if (value > 0) {
 String Bvalue = Integer.toBinaryString(value);//将一个整数转换成字符串类型的二进制数
 int n = Bvalue.length(); //二进制的数字的个数n
 syuan.append("0,");
 syuan.append(Bvalue);
 System.out.println("Original code " + syuan); //原码
 System.out.println("Complement code " + syuan); //补码
 System.out.println("Inverse code " + syuan); //反码
 
// System.out.println("二进制数的n "+n);
 } else if (value < 0) {
 int value2 = Math.abs(value); //负数的绝对值
 int value3 = value2 - 1; //减一求反,求补码
 String Bvalue = Integer.toBinaryString(value2);
 String BFvalue = Integer.toBinaryString(~value2);
 int n = Bvalue.length();
 String str = BFvalue.substring(BFvalue.length() - n); //截取反码的后几个数
 syuan.append("1,");
 syuan.append(Bvalue);
 System.out.println("Original code is :" + syuan);
 System.out.println("Inverse code is :1," + str);
 String BBvalue = Integer.toBinaryString(~value3);
 String str3 = BBvalue.substring(BFvalue.length() - n);
 System.out.println("Complement code is :1," + str3);
 } else {
 System.out.println("0 Original code is not only");
 System.out.println("[+0]riginal code 00.....0");
 System.out.println("[-0]riginal code 10.....0");
 System.out.println("--------------------------------------------");
 System.out.println("0 Complement code is not only");
 System.out.println("[+0]和[-0] Complement code 00.....0");
 System.out.println("---------------------------------------------");
 System.out.println("0 Inverse code is not only");
 System.out.println("[+0]Inverse code00..........0");
 System.out.println("[-0]Inverse code11..........1");
 }
 System.out.println("-------------------------------------------------");
 
 }
}

运行效果:

-------------------------------------------------
True value--> original code
Please enter an integer!!!!!
-65435
Original code is :1,1111111110011011
Inverse code is :1,0000000001100100
Complement code is :1,0000000001100101
-------------------------------------------------

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java中的MapStruct用法详解

    Java中的MapStruct用法详解

    这篇文章主要介绍了Java中的MapStruct用法详解,MapStuct的使用非常简单,把对应的jar包引入即可,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Mybatis如何通过接口实现sql执行原理解析

    Mybatis如何通过接口实现sql执行原理解析

    为了简化MyBatis的使用,MyBatis提供了接口方式自动化生成调用过程,可以大大简化MyBatis的开发,下面这篇文章主要给大家介绍了关于Mybatis如何通过接口实现sql执行原理解析的相关资料,需要的朋友可以参考下
    2023-01-01
  • Java使用Callable和Future创建线程操作示例

    Java使用Callable和Future创建线程操作示例

    这篇文章主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项,需要的朋友可以参考下
    2019-09-09
  • 如何利用IDEA快速生成实体类

    如何利用IDEA快速生成实体类

    这篇文章主要介绍了如何利用IDEA快速生成实体类问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Java zxing实现生成并解析二维码与条形码

    Java zxing实现生成并解析二维码与条形码

    这篇文章主要为大家详细介绍了Java如何通过zxing实现生成并解析二维码与条形码,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2024-11-11
  • java File类的基本使用方法总结

    java File类的基本使用方法总结

    这篇文章主要介绍了java File类的基本使用方法总结,为大家分享了java实现上传代码,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • JAVA 日常开发中Websocket示例详解

    JAVA 日常开发中Websocket示例详解

    JAVA |日常开发中Websocket详解,WebSocket是一种在单个TCP连接上进行全双工通信的协议,它在Web应用中实现了客户端与服务器之间的实时数据传输,本文将详细介绍Java开发中WebSocket的使用,包括基本概念、Java API、使用示例以及注意事项,感兴趣的朋友一起看看吧
    2024-12-12
  • 关于微服务使用Dubbo设置的端口和server.port的区别

    关于微服务使用Dubbo设置的端口和server.port的区别

    这篇文章主要介绍了关于微服务使用Dubbo设置的端口和server.port的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 阿里nacos+springboot+dubbo2.7.3统一处理异常的两种方式

    阿里nacos+springboot+dubbo2.7.3统一处理异常的两种方式

    本文主要介绍了阿里nacos+springboot+dubbo2.7.3统一处理异常的两种方式,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 在Java的Struts框架中ONGL表达式的基础使用入门

    在Java的Struts框架中ONGL表达式的基础使用入门

    这篇文章主要介绍了深入解析在Java的Struts框架中ONGL表达式的基础使用入门,Struts框架是Java的SSH三大web开发框架之一,需要的朋友可以参考下
    2015-11-11

最新评论