當前位置:首頁 » 編程語言 » javabyte二進制

javabyte二進制

發布時間: 2022-08-10 12:44:31

Ⅰ 在java中怎麼把位元組數組轉換成二進制字元串

可以使用Integer類的toBinaryString方法,例如:

bytea=0x45;
StringbinStr=Integer.toBinaryString(a).

API中toBinaryString的解釋:

toBinaryString

public static String toBinaryString(inti)

以二進制(基數 2)無符號整數形式返回一個整數參數的字元串表示形式。

如果參數為負,該無符號整數值為參數加上 232;否則等於該參數。將該值轉換為二進制(基數 2)形式的無前導0的 ASCII 數字字元串。如果無符號數的大小為零,則用一個零字元'0'(』u0030』) 表示它;否則,無符號數大小的表示形式中的第一個字元將不是零字元。字元'0'('u0030') 和'1'('u0031') 被用作二進制數字。


參數:

i- 要轉換為字元串的整數。

返回:

用二進制(基數 2)參數表示的無符號整數值的字元串表示形式。

從以下版本開始:

JDK1.0.2

Ⅱ java怎麼把一個byte變數按二進制輸出

/**
* 將byte轉換為一個長度為8的byte數組,數組每個值代表bit
*/
public static byte[] getBooleanArray(byte b) {
byte[] array = new byte[8];
for (int i = 7; i >= 0; i--) {
array[i] = (byte)(b & 1);
b = (byte) (b >> 1);
}
return array;
}
/**
* 把byte轉為字元串的bit
*/
public static String byteToBit(byte b) {
return ""
+ (byte) ((b >> 7) & 0x1) + (byte) ((b >> 6) & 0x1)
+ (byte) ((b >> 5) & 0x1) + (byte) ((b >> 4) & 0x1)
+ (byte) ((b >> 3) & 0x1) + (byte) ((b >> 2) & 0x1)
+ (byte) ((b >> 1) & 0x1) + (byte) ((b >> 0) & 0x1);
}

使用:
byte b = 0x35; // 0011 0101
// 輸出 [0, 0, 1, 1, 0, 1, 0, 1]
System.out.println(Arrays.toString(getBooleanArray(b)));
// 輸出 00110101
System.out.println(byteToBit(b));
// JDK自帶的方法,會忽略前面的 0
System.out.println(Integer.toBinaryString(0x35));

Ⅲ java中byte占幾個位元組

byte 1個位元組 8位;short、char 2個位元組 16位;int float 4個位元組 32位;double、long 8個位元組 64位;別說些錯答案,位元組和位是有區別的好嘛?!

Ⅳ 關於java的byte取值范圍,一定給分

關於byte位元組范圍理解
首先規定二進制的頭位為符號位,0為正,1為負
符號位用紅色標記一下
則下面的數01111111和00000000代表:

0 1 1 1 1 1 1 1 = + 127 =2^0+2^1+2^2+2^3+2^4+2^5+2^6= 2^7-1(公式就不推啦)

0 0 0 0 0 0 0 0 = + 0

正數已經規定好了而且二進制計算也對應相應的數計算(如1+1=2對應 00000001+00000001=00000002)

這下就差規定負數了
還剩下 1 0000000到1 1111111的代表沒有規定
1 1 1 1 1 1 1 1 =?
1 0 0 0 0 0 0 0 =?

這里就發現二進制0 0000000代表0了,那1 0000000代表什麼?代表 -0 ?這樣不是浪費資源而且不合理?

肯定有人想那 1 0000000規定-1 ,1 1111111規定-128不就好了嘛。
但是這就不符合對應的數計算啦 (如0-1代表0 0000000-0 0000001=?等於-1嗎?明顯感覺哪裡不合理啊)

可以看到正數計算都是符合對應的數計算,那麼0 1111111代表的127在加一會怎麼樣?
可以看到0 1111111+0 0000001=1 0000000
那麼1 0000000代表著什麼數呢?
程序員就規定這個數代表著-128,那麼怎麼來的呢。

先從0 0000000為突破口。意外發現
1 1111111(8位)+0 0000001(8位)=1 0 0000000(9位)而最頭位不存儲的話只剩下0 0000000,而這個數不是代表著0嗎。那麼只有-1+1等於0了。所以規定了1 1111111代表著-1.

-1-1=-2(1 1111110)
-2-1=-3(1 1111101)
-3-1=-4(1 1111100)
·························。。。。。。。。。。。
-127-1=-128(1 0000000)
所以就規定了1 0000000為-128
結論就是:
0 1 1 1 1 1 1 1 +127
0 0 0 0 0 0 0 0 +0

1 1 1 1 1 1 1 1 -1
1 0 0 0 0 0 0 0 -128
這樣計算就符合了對應代表數的計算,但是負數的二進制就沒法從原來的公式推出來了
於是有了補碼

補碼原則:符號位不變,先減一,其它位再相反可以了;
補碼如:
1 1 1 1 1 1 1 1 符號位不變

1 1 1 1 1 1 1 0 減一

1 0 0 0 0 0 0 1 再相反位

這個就可以用原來的公式推出代表著-1啦,以上就是本人自己的理解啦,主要為了簡明易懂。其次符號位算入其中不嚴謹,可能有錯還望指出。

Ⅳ JAVA中byte類型的介紹。 謝謝

1、在Java中,byte類型的數據是8位帶符號的二進制數。最高位表示正負,0為正,1為負。

2、java byte是做為最小的數字來處理的,因此它的值域被定義為-128~127,也就是signed byte。

3、正數的最高位都是 0 ,正數的值就是二進製表示的值。

4、負數的最高位都是 1 ,負數的值是 取反後加一 然後加個負號得到的值。

(5)javabyte二進制擴展閱讀

1、java基本數據類型

JAVA中一共有八種基本數據類型,分別是byte、short、int、long、float、double、char、boolean。

2、java各數據類型取值范圍

byte,整型,1個位元組,范圍:-2的7次方 ~ 2的7次方-1;

short,整型,2個位元組,范圍:-2的15次方 ~ 2的15次方-1;

int,整型,4個位元組,范圍:-2的31次方 ~ 2的31次方-1;

long,整型,8個位元組,范圍:-2的63次方 ~ 2的63次方-1;

float,浮點型,4個位元組,范圍:3.402823e+38 ~ 1.401298e-45;

double,浮點型,8個位元組,范圍:1.797693e+308~ 4.9000000e-324;

char,文本型,2個位元組,范圍:0~2的16次方-1;

boolean,布爾型,1個位元組,范圍:true/false;

參考資料

網路-java字元型

Ⅵ java byte數組寫入本地文件,那這個文件是二進制文件嗎不是的話,是什麼文件跪求解答啊

byte是十進制的數字。。
給你看個例子:
public class Test {

public static void main(String[] args) {
String str = "b";
byte[] bytes = str.getBytes();
for(byte b:bytes){
System.out.println(b);
System.out.println(Integer.toBinaryString(b));
}

}
}

Ⅶ Java byte 二進制

byte a = 1111; // 這樣定義,這個 1111 到底是二進制,還是10進制,還是 X 進制,系統是不知道的。。
在這里,1111 默認被當作 10 進制。。
Java 不支持顯式輸入二進制,默認為 10 進制,0 開頭為8進制,比如 01111,0x開頭為16 進制,比如 0x11。。
byte 數據類型所表示的范圍為 -128~127,已經超出范圍了。。

Ⅷ java如何將BYTE型數轉化為八位二進制,及如何將八位二進制數轉化為Byte型的。

使用八進製表示整數,只要在十進制數前加一個0就可以了,比如12的八進制就i=012,這樣在輸出時System.out.println("i=" +i)就是i=10

Ⅸ Java里byte類型最大和最小值的二進製表示

Java用的是補碼,補碼的規則就是這樣,每位都是 1 就表示負一,最高位是 1 其餘位是 0 表示的是最小值

Ⅹ JAVA 位運算 (byte) (a << 2); 是什麼意思

您好,你的問題,我之前好像也遇到過,以下是我原來的解決思路和方法,希望能幫助到你,若有錯誤,還望見諒!展開全部
你看下這篇文章就清楚了

首先要明白一點,這裡面所有的操作都是針對存儲在計算機中中二進制的操作,那麼就要知道,正數在計算機中是用二進製表示的,負數在計算機中使用補碼表示的。

左移位:<<,有符號的移位操作
左移操作時將運算數的二進制碼整體左移指定位數,左移之後的空位用0補充

右移位:>>,有符號的移位操作
右移操作是將運算數的二進制碼整體右移指定位數,右移之後的空位用符號位補充,如果是正數用0補充,負數用1補充。

例子:

public static void main(String[] args)
{

System.out.println(3<<2);//3左移2位
System.out.println(-3<<2);//-3左移2位

System.out.println(6>>2);//6右移2位
System.out.println(-6>>2);//-6右移2位

}

輸出結果

12
-12
1
-2
下面解釋一下:

00000000 00000000 00000000 00000011 +3在計算機中表示
00000000 00000000 00000000 0000001100 左移2位,補0,結果為12

----------------------------------------------------------------------------------------------

00000000 00000000 00000000 00000011 +3在計算機中表示
11111111 11111111 11111111 11111100
11111111 11111111 11111111 11111101 -3在計算機中表示
11111111 11111111 11111111 1111110100 左移2位,補0,結果為負數,就是補碼了,求原碼
10000000 00000000 00000000 00001011
10000000 00000000 00000000 00001100 結果-12
----------------------------------------------------------------------------------------------

這也說明了一個問題:在計算機中,以1開頭的就是補碼的形式,是負數。

00000000 00000000 00000000 00000110 +6在計算機中表示方法
0000000000 00000000 00000000 00000110 右移兩位,正數補0,結果為1
----------------------------------------------------------------------------------------------

00000000 00000000 00000000 00000110 +6在計算機中表示方法
11111111 11111111 11111111 11111001
11111111 11111111 11111111 11111010 -6在計算機中的表示
1111111111 11111111 11111111 11111010 右移兩位,結果為負數
1000000000 00000000 00000000 000001
1000000000 00000000 00000000 000010 結果為-2
這個地方很容易弄混,多想幾次就會慢慢理解了。

上面解釋了帶符號的移位操作,下面解釋一下不帶符號的移位操作

無符號的移位只有右移,沒有左移使用「>>>」進行移位,都補充0

例如:
public static void main(String[] args)
{
System.out.println(6>>>2);
System.out.println(-6>>>2);

}
結果:

1
1073741822

分析:

00000000 00000000 00000000 00000110 +6在計算機中表示方法
0000000000 00000000 00000000 00000110 右移兩位,正數補0,結果為1
-----------------------------------------------------------------------------------------------------

00000000 00000000 00000000 00000110 +6在計算機中表示方法
11111111 11111111 11111111 11111001
11111111 11111111 11111111 11111010 -6在計算機中的表示
0011111111 11111111 11111111 11111010 右移兩位,補充0,結果為1073741822

以下來自:

可以參考

移位操作要注意的問題是高(低)位是補0還是補1和對char, byte, short型的操作:
(1)<< : (left-shift), 最低位補0
(2)>> : (signed right-shift), 右移過程使用符號位擴展(sign extension),即如果符號為為1則高位補1, 是0則補0,也就是邏輯右移
(3)>>> : (unsigned right-shit),右移過程使用零擴展(zero extension),即最高位一律補0,也就是算術右移
(4)移位操作的數據類型可以是byte, char, short, int, long型,但是對byte, char, short進行操作時會先把它們變成一個int型,最後得到一個int型的結果,對long型操作時得到一個long型結果,不可以對boolean型進行操作。
(5)移位操作符可以和=合並起來,即 <<= 、 >>= 和 >>>=。例如 a >>= 2; 表示將a右移兩位後的值重新賦給a。當時在使用這三個操作符對 byte, char, short型數據進行操作時要注意,例如有一下代碼片段:非常感謝您的耐心觀看,如有幫助請採納,祝生活愉快!謝謝!

熱點內容
string的長度java 發布:2024-04-20 22:46:20 瀏覽:135
網易我的世界監獄風雲的伺服器 發布:2024-04-20 22:35:41 瀏覽:185
linux服務自動重啟 發布:2024-04-20 22:34:54 瀏覽:961
編譯器最後的結果 發布:2024-04-20 22:30:38 瀏覽:820
安裝linuxoracle11g 發布:2024-04-20 22:29:02 瀏覽:532
android設置權重 發布:2024-04-20 22:20:08 瀏覽:724
什麼手機安卓系統80 發布:2024-04-20 21:37:29 瀏覽:379
浙江萬里的伺服器地址 發布:2024-04-20 21:16:59 瀏覽:407
ndklinux下載 發布:2024-04-20 21:05:22 瀏覽:566
王者榮耀解壓資源包97 發布:2024-04-20 20:46:10 瀏覽:397