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进制,然后直接反码,再算补码,就是温度数据
代码验证:
packagecomtest.example.admin.znum;
/**
*Createdbywrson2019/6/5,16:25
*projectName:Testz
*packageName:comtest.example.admin.znum
*输入一个真值(整数)求它的原码,反码,补码
*/
importjava.util.Scanner;
publicclassTest{
publicstaticvoidmain(String[]args){
System.out.println("Truevalue-->originalcode");
System.out.println("Pleaseenteraninteger!!!!!");
Scannersc=newScanner(System.in);
intvalue=sc.nextInt();
StringBuildersyuan=newStringBuilder();
if(value>0){
StringBvalue=Integer.toBinaryString(value);//将一个整数转换成字符串类型的二进制数
intn=Bvalue.length();//二进制的数字的个数n
syuan.append("0,");
syuan.append(Bvalue);
System.out.println("Originalcode"+syuan);//原码
System.out.println("Complementcode"+syuan);//补码
System.out.println("Inversecode"+syuan);//反码
//System.out.println("二进制数的n"+n);
}elseif(value<0){
intvalue2=Math.abs(value);//负数的绝对值
intvalue3=value2-1;//减一求反,求补码
StringBvalue=Integer.toBinaryString(value2);
StringBFvalue=Integer.toBinaryString(~value2);
intn=Bvalue.length();
Stringstr=BFvalue.substring(BFvalue.length()-n);//截取反码的后几个数
syuan.append("1,");
syuan.append(Bvalue);
System.out.println("Originalcodeis:"+syuan);
System.out.println("Inversecodeis:1,"+str);
StringBBvalue=Integer.toBinaryString(~value3);
Stringstr3=BBvalue.substring(BFvalue.length()-n);
System.out.println("Complementcodeis:1,"+str3);
}else{
System.out.println("0Originalcodeisnotonly");
System.out.println("[+0]riginalcode00.....0");
System.out.println("[-0]riginalcode10.....0");
System.out.println("--------------------------------------------");
System.out.println("0Complementcodeisnotonly");
System.out.println("[+0]和[-0]Complementcode00.....0");
System.out.println("---------------------------------------------");
System.out.println("0Inversecodeisnotonly");
System.out.println("[+0]Inversecode00..........0");
System.out.println("[-0]Inversecode11..........1");
}
System.out.println("-------------------------------------------------");
}
}
运行效果:
------------------------------------------------- Truevalue-->originalcode Pleaseenteraninteger!!!!! -65435 Originalcodeis:1,1111111110011011 Inversecodeis:1,0000000001100100 Complementcodeis:1,0000000001100101 -------------------------------------------------
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。