java原码补码反码关系解析
作者:cf8833 发布时间:2021-12-26 20:30:29
标签: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
-------------------------------------------------
来源:https://blog.csdn.net/cf8833/article/details/90905284


猜你喜欢
- Semaphore也是一个同步器,和前面两篇说的CountDownLatch和CyclicBarrier不同,这是递增的,初始化的时候可以指
- 题目一 解法/** * Definition for a binary tree node. * public class Tre
- github开源项目(Zxing)demo最快的调用Zxing方法1.关联第三方库2.调用基础的扫码3.获取返回值具体代码如下://1.默认
- 在使用java项目时,如果没有详细的管理和辅助流程,就会像程序失去了系统的调配一样。在java中有一种专门管理项目的工具,叫做maven,除
- 首先我们常用的注解包括@Entity、@Table、@Id、@IdClass、@GeneratedValue、@Basic、@Transie
- Java是一门面向对象的语言,即一切皆是对象!那么为何数据类型中还分为:基本类型和对象?Java中有8种基本数据类型boolean、byte
- 前言我在上一篇文章聊了Redisson的分布式锁,这次继续来聊聊Redisson的公平锁。下面是官方原话:它保证了当多个Redisson客户
- 前言经过一段时间的学习Oauth2,在网上也借鉴学习了一些大牛的经验,推荐在学习的过程中多看几遍阮一峰的《理解OAuth 2.0》,经过对O
- MyEclipse配置IDEA配置Tomcat环境IDEA:2020.2Tomcat:apache-tomcat-9.0.38创建Web项目
- 本文实例为大家分享了JavaWeb实现简单文件上传的具体代码,供大家参考,具体内容如下1.概述通常浏览器上传的所有参数,我们可以通过requ
- 本文实例为大家分享了安装和配置maven环境的具体步骤,供大家参考,具体内容如下下载maven:1.进入官网下载:http://maven.
- 前言java有八个基本数据类型,每个都有对应的一个包装类,比如int对应的Integer。 Integer 是int的包装类型,数据类型是类
- 相信做 Java 开发的朋友,大多都是学习过或至少了解过 Java GUI 编程的,其中有大量的事件和控件的绑定,当我们需要在点击某个按钮实
- 这里文章写出来并不是为了炫耀什么,只是觉得发现些好东西就分享出来而已,同时也做个记录,方便以后查找开始正文1、先介绍本文会用到的window
- C#操作注册表全攻略相信每个人对注册表并不陌生,在运行里面输入“regedit”就可以打开注册表编辑器了。这东西对Windows系统来说可是
- 微服务启动时报错2021-05-18 21:25:44.644 WARN 5452 — [tbeatExecutor-0
- 这篇文章主要介绍了Java如何把int类型转换成byte,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 现在的Android应用,只要有一个什么新的创意,过不了多久,几乎所有的应用都带这个创意。这不,咱们公司最近的一个持续性的项目,想在首页加个
- 一、使用方式可以采用Transactional,配置propagation即可。打开org.springframework.transact
- 1、环境搭建创建一个SpringBoot项目,普通的web项目就可以了,我这里使用的是start.aliyun引入依赖:(1)老演员了不多说