真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java二進(jìn)制代碼,二進(jìn)制 java

java中二進(jìn)制怎么表示?

二進(jìn)制是計(jì)算技術(shù)中廣泛采用的一種數(shù)制。二進(jìn)制數(shù)據(jù)是用0和1兩個(gè)數(shù)碼來表示的數(shù)。它的基數(shù)為2,進(jìn)位規(guī)則是“逢二進(jìn)一”,借位規(guī)則是“借一當(dāng)二”,由18世紀(jì)德國數(shù)理哲學(xué)大師萊布尼茲發(fā)現(xiàn)。當(dāng)前的計(jì)算機(jī)系統(tǒng)使用的基本上是二進(jìn)制系統(tǒng),數(shù)據(jù)在計(jì)算機(jī)中主要是以補(bǔ)碼的形式存儲(chǔ)的。計(jì)算機(jī)中的二進(jìn)制則是一個(gè)非常微小的開關(guān),用“開”來表示1,“關(guān)”來表示0。

成都創(chuàng)新互聯(lián)公司主營汕城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā),汕城h5微信小程序搭建,汕城網(wǎng)站營銷推廣歡迎汕城等地區(qū)企業(yè)咨詢

1、Java中定義兩個(gè)數(shù),然后分別打印出它們的二進(jìn)制表示:

System.out.println("Java二進(jìn)制7: "+Integer.toBinaryString(7));

System.out.println("Java二進(jìn)制-7: "+Integer.toBinaryString(-7));

輸出:

Java二進(jìn)制7:

111

Java二進(jìn)制-7:

11111111111111111111111111111001

可以看到Java中對(duì)于數(shù)的表示屬于有符號(hào)的,那么這個(gè)是怎么來的?

7好辦,直接是111

-7轉(zhuǎn)化二進(jìn)制的過程:

(1)把-7轉(zhuǎn)化成7,二進(jìn)制是

111

(2)Java中對(duì)于不滿32位的int二進(jìn)制自動(dòng)補(bǔ)齊,所以變成了

(29個(gè)0)111

(3)然后取反

(29個(gè)1)000

(4)然后加1

(29個(gè)1)001

這就是-7的整個(gè)轉(zhuǎn)化過程,那么現(xiàn)在有一個(gè)問題,如果有一個(gè)文本文件,每一行有八位二進(jìn)制,表示的范圍是(0~255),也就是用一個(gè)字節(jié)表示的無符號(hào)整數(shù),如果現(xiàn)在要把這些二進(jìn)制轉(zhuǎn)化成整數(shù)存到文件里應(yīng)該怎么做?

文件:

line1

11111110

(254)

line2

00000000

(0)

假設(shè)用Java讀進(jìn)了第一行,那么直接打印出來的值是-2,不符合要求,這時(shí)讓-2變254有兩種辦法:

(1)用Java自帶的方法,Byte.toUnsignedInt((byte)

-2)(ps.-2的二進(jìn)制表示就是line1),這樣打印出來的就是254了

System.out.println(Byte.toUnsignedInt((byte) -2));

輸出:254

第二種方法的原理:

Java中-2的二進(jìn)制表示:11111111111111111111111111111110(這個(gè)二進(jìn)制的后八位就是line1,可以直接打印的話Java把其當(dāng)做了負(fù)數(shù)

-2)

Java中255的二進(jìn)制表示:00000000000000000000000011111111(24個(gè)‘0’,8個(gè)‘1’)

做與后變?yōu)椋?0000000000000000000000011111110

這樣做與后表示的數(shù)就是正數(shù)了

254??梢韵胍幌?,假設(shè)每一行用2個(gè)字節(jié)表示一個(gè)無符號(hào)數(shù),那么可以把每一行變成正整數(shù)用方法2怎么做?

2.Java中的和

''

算術(shù)右移,向右移左邊補(bǔ)符號(hào)位

''

邏輯右移,向右移左邊補(bǔ)0

System.out.println("Java二進(jìn)制-7: "+Integer.toBinaryString(-7));

System.out.println("-72: "+Integer.toBinaryString(-72));

System.out.println("-72: "+Integer.toBinaryString(-72));輸出:

Java二進(jìn)制-7: 11111111111111111111111111111001

-72: 11111111111111111111111111111110

-72: 111111111111111111111111111110 //正常應(yīng)該這樣(00)111111111111111111111111111110左邊的兩個(gè)0不顯示

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)行測試:

1000011000100011

34339.872044851465

Infinity

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

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

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);

/*

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

* 但為了展示十進(jìn)制轉(zhuǎn)二進(jìn)制的算法,現(xiàn)選擇以下程序來進(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è)無限循環(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


網(wǎng)站名稱:java二進(jìn)制代碼,二進(jìn)制 java
本文路徑:http://weahome.cn/article/phhhhe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部