java原碼補(bǔ)碼反碼關(guān)系解析
本文為大家解析了java原碼補(bǔ)碼反碼的關(guān)系,供大家參考,具體內(nèi)容如下
原碼:不管源數(shù)據(jù)是十進(jìn)制還是十六進(jìn)制,統(tǒng)統(tǒng)將數(shù)字轉(zhuǎn)成二進(jìn)制形式
反碼:把原碼的二進(jìn)制統(tǒng)統(tǒng)反過來,0變成1,1變成0
補(bǔ)碼:負(fù)數(shù)的反碼加1,就是負(fù)數(shù)的補(bǔ)碼
例子1:
十進(jìn)制整數(shù) -5,-5的原碼101,-5的反碼1,010,-5的補(bǔ)碼1,011,
所以,-5的反碼是-2,-5的補(bǔ)碼是-3,其中前面的"1,",表示正數(shù)負(fù)數(shù)
例子2:
十六進(jìn)制 -ff9B
原碼 11111111111110011011
反碼 00000000000001100100 十進(jìn)制100
補(bǔ)碼 00000000000001100100 十進(jìn)制101
原來正確的操作流程是,把16進(jìn)制ff9B轉(zhuǎn)成2進(jìn)制,然后直接反碼,再算補(bǔ)碼,就是溫度數(shù)據(jù)
代碼驗(yàn)證:
package comtest.example.admin.znum;
/**
* Created by wrs on 2019/6/5,16:25
* projectName: Testz
* packageName: comtest.example.admin.znum
* 輸入一個(gè)真值(整數(shù))求它的原碼,反碼,補(bǔ)碼
*/
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);//將一個(gè)整數(shù)轉(zhuǎn)換成字符串類型的二進(jìn)制數(shù)
int n = Bvalue.length(); //二進(jìn)制的數(shù)字的個(gè)數(shù)n
syuan.append("0,");
syuan.append(Bvalue);
System.out.println("Original code " + syuan); //原碼
System.out.println("Complement code " + syuan); //補(bǔ)碼
System.out.println("Inverse code " + syuan); //反碼
// System.out.println("二進(jìn)制數(shù)的n "+n);
} else if (value < 0) {
int value2 = Math.abs(value); //負(fù)數(shù)的絕對值
int value3 = value2 - 1; //減一求反,求補(bǔ)碼
String Bvalue = Integer.toBinaryString(value2);
String BFvalue = Integer.toBinaryString(~value2);
int n = Bvalue.length();
String str = BFvalue.substring(BFvalue.length() - n); //截取反碼的后幾個(gè)數(shù)
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("-------------------------------------------------");
}
}
運(yùn)行效果:
------------------------------------------------- True value--> original code Please enter an integer!!!!! -65435 Original code is :1,1111111110011011 Inverse code is :1,0000000001100100 Complement code is :1,0000000001100101 -------------------------------------------------
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Mybatis如何通過接口實(shí)現(xiàn)sql執(zhí)行原理解析
為了簡化MyBatis的使用,MyBatis提供了接口方式自動(dòng)化生成調(diào)用過程,可以大大簡化MyBatis的開發(fā),下面這篇文章主要給大家介紹了關(guān)于Mybatis如何通過接口實(shí)現(xiàn)sql執(zhí)行原理解析的相關(guān)資料,需要的朋友可以參考下2023-01-01
Java使用Callable和Future創(chuàng)建線程操作示例
這篇文章主要介紹了Java使用Callable和Future創(chuàng)建線程操作,結(jié)合實(shí)例形式分析了java使用Callable接口和Future類創(chuàng)建線程的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-09-09
Java?zxing實(shí)現(xiàn)生成并解析二維碼與條形碼
這篇文章主要為大家詳細(xì)介紹了Java如何通過zxing實(shí)現(xiàn)生成并解析二維碼與條形碼,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2024-11-11
關(guān)于微服務(wù)使用Dubbo設(shè)置的端口和server.port的區(qū)別
這篇文章主要介紹了關(guān)于微服務(wù)使用Dubbo設(shè)置的端口和server.port的區(qū)別,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
阿里nacos+springboot+dubbo2.7.3統(tǒng)一處理異常的兩種方式
本文主要介紹了阿里nacos+springboot+dubbo2.7.3統(tǒng)一處理異常的兩種方式,文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
在Java的Struts框架中ONGL表達(dá)式的基礎(chǔ)使用入門
這篇文章主要介紹了深入解析在Java的Struts框架中ONGL表達(dá)式的基礎(chǔ)使用入門,Struts框架是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2015-11-11

