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

