包含2進(jìn)制代碼java的詞條

java十進(jìn)制轉(zhuǎn)二進(jìn)制代碼怎么解決?

下面是根據(jù)十進(jìn)制數(shù)轉(zhuǎn)二進(jìn)制數(shù)的算法所寫(xiě)的一段Java程序示例代碼:

專(zhuān)注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)武進(jìn)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

import java.math.BigDecimal;

public class Test {

public static void main(String[] args) {

Test t = new Test();

double d = 8;

String s = t.decimal2BinaryStr(d);

System.out.println("十進(jìn)制數(shù)"+d+"轉(zhuǎn)成二進(jìn)制數(shù)為:"+s);

}

/**

* 十進(jìn)制數(shù)轉(zhuǎn)二進(jìn)制數(shù)

* @param d 十進(jìn)制數(shù)

* @return 十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制的字符串

*/

public String decimal2BinaryStr(double d){

String result = decimal2BinaryStr_Inte(d);

result += decimal2BinaryStr_Deci(d);

return result;

}

/**

* 十進(jìn)制整數(shù)部分轉(zhuǎn)二進(jìn)制數(shù)

* @param d 十進(jìn)制數(shù)

* @return 十進(jìn)制整數(shù)部分轉(zhuǎn)換成二進(jìn)制的字符串

*/

public String decimal2BinaryStr_Inte(double d){

// ? ? ?return Integer.toBinaryString((int)d);

/*

* 本來(lái)利用上面的Integer.toBinaryString(int)就可以得到整數(shù)部分的二進(jìn)制結(jié)果,

* 但為了展示十進(jìn)制轉(zhuǎn)二進(jìn)制的算法,現(xiàn)選擇以下程序來(lái)進(jìn)行轉(zhuǎn)換

*/

String result = "";

long inte = (long)d;

int index = 0;

while(true){

result += inte%2;

inte = inte/2;

index++;

if(index%4 == 0){

result+=" ";

}

if(inte==0){

while(index%4!=0){

result+="0";

index++;

}

break;

}

}

char[] c = result.toCharArray();

char[] cc = new char[c.length];

for(int i=c.length; i0; i--){

cc[cc.length-i] = c[i-1];

}

return new String(cc);

}

/**

* 十進(jìn)制小數(shù)部分轉(zhuǎn)二進(jìn)制

* @param d 十進(jìn)制數(shù)

* @return 十進(jìn)制小數(shù)部分轉(zhuǎn)換成二進(jìn)制小數(shù)的字符串

*/

public String decimal2BinaryStr_Deci(double d){

return decimal2BinaryStr_Deci(d, 0);

}

/**

* 十進(jìn)制小數(shù)部分轉(zhuǎn)二進(jìn)制

* @param d 十進(jìn)制數(shù)

* @param scale 小數(shù)部分精確的位數(shù)

* @return 十進(jìn)制小數(shù)部分轉(zhuǎn)換成二進(jìn)制小數(shù)的字符串

*/

public String decimal2BinaryStr_Deci(double d, int scale){

double deci = sub(d,(long)d);

if(deci==0){

return "";

}

//為了防止程序因所轉(zhuǎn)換的數(shù)據(jù)轉(zhuǎn)換后的結(jié)果是一個(gè)無(wú)限循環(huán)的二進(jìn)制小數(shù),因此給其一個(gè)默認(rèn)的精確度

if(scale==0){

scale = (String.valueOf(deci).length()-2)*4;

}

int index = 0;

StringBuilder inteStr = new StringBuilder();

double tempD = 0.d;

while(true){

if(deci==0 || index==scale){

while(index%4!=0){

inteStr.append("0");

index++;

}

break;

}

if(index==0){

inteStr.append(".");

}

tempD = deci*2;

inteStr.append((int)tempD);

deci = sub(tempD ,(int)tempD);

index++;

if(index%4 == 0){

inteStr.append(" ");

}

}

return inteStr.toString();

}

/**

* 提供精確的減法運(yùn)算。

* @param v1 被減數(shù)

* @param v2 減數(shù)

* @return 兩個(gè)參數(shù)的差

*/

public static double sub(double v1, double v2) {

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.subtract(b2).doubleValue();

}

}

例如將十進(jìn)制數(shù)1234.5轉(zhuǎn)成二進(jìn)制數(shù)為:0100 1101 0010.1000

java十進(jìn)制轉(zhuǎn)二進(jìn)制的代碼是什么?

import java.math.BigDecimal;

public class Test {

public static void main(String[] args) {

Test t = new Test();

double d = 8;

String s = t.decimal2BinaryStr(d);

System.out.println("十進(jìn)制數(shù)"+d+"轉(zhuǎn)成二進(jìn)制數(shù)為:"+s);

}

/**

* 十進(jìn)制數(shù)轉(zhuǎn)二進(jìn)制數(shù)

* @param d 十進(jìn)制數(shù)

* @return 十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制的字符串

*/

public String decimal2BinaryStr(double d){

String result = decimal2BinaryStr_Inte(d);

result += decimal2BinaryStr_Deci(d);

return result;

}

/**

* 十進(jìn)制整數(shù)部分轉(zhuǎn)二進(jìn)制數(shù)

* @param d 十進(jìn)制數(shù)

* @return 十進(jìn)制整數(shù)部分轉(zhuǎn)換成二進(jìn)制的字符串

*/

public String decimal2BinaryStr_Inte(double d){

// ? ? ?return Integer.toBinaryString((int)d);

/*

一、java的簡(jiǎn)介

java是由Sun Microsystems公司推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言(以下簡(jiǎn)稱Java語(yǔ)言)和Java平臺(tái)的總稱。

Java由James Gosling和同事們共同研發(fā),并在1995年正式推出。Java最初被稱為Oak,是1991年為消費(fèi)類(lèi)電子產(chǎn)品的嵌入式芯片而設(shè)計(jì)的。

Java被廣泛接受并推動(dòng)了Web的迅速發(fā)展,常用的瀏覽器均支持Javaapplet。另一方面,Java技術(shù)也不斷更新。Java自面世后就非常流行,發(fā)展迅速,對(duì)C++語(yǔ)言形成有力沖擊。

在全球云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢(shì)和廣闊前景。2010年Oracle公司收購(gòu)Sun Microsystems。

java 如何顯示 二進(jìn)制

java顯示二進(jìn)制,主要是使用基本類(lèi)型的包裝類(lèi)的tobinaryString類(lèi)型進(jìn)行轉(zhuǎn)換,代碼如下:

package?com.qiu.lin.he;

import?java.text.ParseException;

public?class?Ceshi?{

public?static?void?main(String[]?args)?throws?ParseException?{

int?i?=?8;

//使用包裝類(lèi)的toBinaryString轉(zhuǎn)換成二進(jìn)制

System.out.println(Integer.toBinaryString(i));

}

}

運(yùn)行結(jié)果如下

java中什么是能夠在計(jì)算機(jī)CPU上執(zhí)行的二進(jìn)制代碼?

java中的JVM是能夠在計(jì)算機(jī)CPU上執(zhí)行的二進(jìn)制代碼。

java的執(zhí)行過(guò)程

Java代碼需要經(jīng)過(guò)編譯和解釋兩個(gè)步驟,才在能在平臺(tái)上運(yùn)行。首先java語(yǔ)言的編譯器,幫java代碼編譯成class的字節(jié)碼,之后通過(guò)java虛擬機(jī)(JVM)來(lái)解釋執(zhí)行。

java代碼的編譯

java代碼是如何編譯的?

首先編譯的解釋?zhuān)喊延酶呒?jí)程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)的源程序,翻譯成等價(jià)的計(jì)算機(jī)匯編語(yǔ)言或機(jī)器語(yǔ)言書(shū)寫(xiě)的目標(biāo)程序的翻譯程序。編譯的具體過(guò)程,可以看看《編譯原理》相關(guān)的書(shū)籍。

其實(shí)java的編譯過(guò)程,和通常c/c++還是不同的。

java編譯后的字節(jié)碼文件格式主要分為兩部分:常量池和方法字節(jié)碼。常量池記錄的是代碼出現(xiàn)過(guò)的所有token(類(lèi)名,成員變量名等等)以及符號(hào)引用(方法引用,成員變量引用等等);方法字節(jié)碼放的是類(lèi)中各個(gè)方法的字節(jié)碼。

Java編譯器卻不將對(duì)變量和方法的引用編譯為數(shù)值引用,也不確定程序執(zhí)行過(guò)程中的內(nèi)存布局,而是將些符號(hào)引用信息保留在字節(jié)碼中,由解釋器在運(yùn)行過(guò)程中創(chuàng)立內(nèi)存布局,然后再通過(guò)查表來(lái)確定一個(gè)方法所在的地址,這樣就有效地保證了java的可移植性和安全性。

c/c++的編譯,當(dāng)C編譯器編譯生成一個(gè)對(duì)象的代碼時(shí),該代碼是為在某一特定硬件平臺(tái)運(yùn)行而生成的。因此在編譯過(guò)程中,編譯程序通過(guò)查表將所有對(duì)符號(hào)的引用轉(zhuǎn)換為特定的內(nèi)存偏移量,以保證程序運(yùn)行。

java虛擬機(jī)(JVM)

簡(jiǎn)單的可以這樣理解它的功能:就是將java編譯之后的字節(jié)碼,解釋成cpu能夠執(zhí)行的二進(jìn)制代碼。

JVM是一個(gè)虛構(gòu)出來(lái)的計(jì)算機(jī),是通過(guò)在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的。JVM有自己完善的硬件架構(gòu),如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。JVM?的主要工作是解釋自己的指令集(即字節(jié)碼)并映射到本地的?CPU?的指令集或?OS?的系統(tǒng)調(diào)用。Java語(yǔ)言是跨平臺(tái)運(yùn)行的,其實(shí)就是不同的操作系統(tǒng),使用不同的JVM映射規(guī)則,讓其與操作系統(tǒng)無(wú)關(guān),完成了跨平臺(tái)性。JVM?對(duì)上層的?Java?源文件是不關(guān)心的,它關(guān)注的只是由源文件生成的類(lèi)文件(?class file)。類(lèi)文件的組成包括?JVM?指令集,符號(hào)表以及一些補(bǔ)助信息。

java虛擬機(jī)工作的原理,可以自己找一下網(wǎng)上的資料。大家還需要思考的問(wèn)題,jvm的內(nèi)存、jvm的垃圾回收(GC)、Android的朋友還要區(qū)分(Dalvik 和標(biāo)準(zhǔn) Java 虛擬機(jī)JVM)的區(qū)別。

總結(jié):

java代碼編譯之后,可以直接運(yùn)行在Windows或者其它裝有JVM虛擬機(jī)的系統(tǒng)下。而C或C++直接編譯成與機(jī)器和操作系統(tǒng)相關(guān)的代碼。所以C語(yǔ)言編譯的程序沒(méi)有跨平臺(tái)性,就算沒(méi)有使用到操作系統(tǒng)相關(guān)的API,在不同的系統(tǒng)下也必須重新編譯才能運(yùn)行。

java編譯器把java程序編譯成虛擬機(jī)可以識(shí)別的二進(jìn)制代碼,稱為什么?

由java編譯器把源文件編譯成虛擬機(jī)可以識(shí)別的二進(jìn)制代碼稱為字節(jié)碼。

而字節(jié)碼是由java解釋器去解釋執(zhí)行的。

java二進(jìn)制編碼

稍微修改了一下:

import java.math.BigInteger;

import java.lang.Math;

public class HardWork {

public static void main(String args[]) {

double L;

double m;

L=Math.log(31)*10000;

m= 15.5*(Math.pow(2,L)-1);

String a =String.valueOf((int)L);//輸入數(shù)值

BigInteger src = new BigInteger(a);

System.out.println(src.toString(2));

System.out.println(L);

System.out.println(m);

}

}

運(yùn)行測(cè)試:

1000011000100011

34339.872044851465

Infinity

當(dāng)前文章:包含2進(jìn)制代碼java的詞條
文章出自:http://muchs.cn/article48/docoghp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、微信公眾號(hào)做網(wǎng)站、品牌網(wǎng)站制作、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化