⑴ java的數字二進制輸出
首先,java里int是有32位2進制數組成的
我們一般賦值
int
i
=
1;
這個是賦值10進制的數
賦值
2進制要
int
i
=
01;(前面加個0,就表示是2進制數)
賦值16進制(常用)
int
i
=
0x00000001;
(0x表示為16進制數)
3種的值都是1.
要用2進制輸出就是Integer.toBinaryString(i)
拓展:
因為計算機處理位運算速度是非常快的(應該是最快的運算)
所以很多時候,如果有一堆boolean變數需要表示時,
一般只用1個int的數表示,如:
int
i
=
0x0000000f;//表示後4位為1
int
m
=
(i
>>
2)
&
1;
//
其中m就是表示某一位的值,2表示右邊開始數第2位(當然是從第0位開始算的)
這樣就能取具體每一位的值
這種方法在很吃代碼效率的程序中經常遇到
全手打,望支持
⑵ 跪求「java中二進制怎麼表示」
java中二進制的表示:
1、Java中定義兩個數,然後分別列印出它們的二進製表示(例如7和-7):
System.out.println("Java二進制7:"+Integer.toBinaryString(7));
System.out.println("Java二進制-7:"+Integer.toBinaryString(-7));
輸出:
Java二進制7: 111
Java二進制-7:
7的二進制就是111
-7轉化二進制的過程:
(1)把-7轉化成7,二進制是 111
(2)Java中對於不滿32位的int二進制自動補齊,所以變成了 (29個0)111
(3)然後取反 (29個1)000
(4)然後加1 (29個1)001
(2)javastring二進制擴展閱讀:
c語言中二進制的轉換:
用函數轉換itoa(值,數組名,進制)
#include<stdio.h>
#include<stdlib.h>
voidmain()
{
char str[8];
inti=8;
itoa(i,str,2);
printf("%s",str);
}
⑶ java怎樣把字元串轉化為二進制形式
importjava.io.UnsupportedEncodingException;
importjava.util.Arrays;
/*
*String(byte[]bytes,StringcharsetName):通過指定的字元集解碼位元組數組
*byte[]getBytes(StringcharsetName):使用指定的字元集合把字元串編碼為位元組數組
*
*編碼:把看得懂的變成看不懂的
*String--byte[]
*
*解碼:把看不懂的變成看得懂的
*byte[]--String
*
*舉例:諜戰片(發電報,接電報)
*
*碼表:小本子
* 字元 數值
*
*要發送一段文字:
* 今天晚上在老地方見
*
* 發送端:今--數值--二進制--發出去
* 接收端:接收--二進制--十進制--數值--字元--今
*
* 今天晚上在老地方見
*
*編碼問題簡單,只要編碼解碼的格式是一致的。
*/
publicclassStringDemo{
publicstaticvoidmain(String[]args){
Strings="你好";
//String--byte[]
byte[]bys=s.getBytes();//[-60,-29,-70,-61]
//byte[]bys=s.getBytes("GBK");//[-60,-29,-70,-61]
//byte[]bys=s.getBytes("UTF-8");//[-28,-67,-96,-27,-91,-67]
System.out.println(Arrays.toString(bys));
//byte[]--String
Stringss=newString(bys);//你好
//Stringss=newString(bys,"GBK");//你好
//Stringss=newString(bys,"UTF-8");//???
System.out.println(ss);
}
}
⑷ java中如何將十進制數字轉化成二進制
如果表達小於2^31-1的正數代碼如下:
public void binaryToDecimal(int n){
int t = 0; //用來記錄位數
int bin = 0; //用來記錄最後的二進制數
int r = 0; //用來存儲余數
while(n != 0){
r = n % 2;
n = n / 2;
bin += r * Math().pow(10,t);
t++;
}
System.out.println(bin);
}
使用字元串的拼接(+)來實現大於2^31-1的數,代碼如下:
public void binaryToDecimal(int n){
String str = "";
while(n!=0){
str = n%2+str;
n = n/2;
}
System.out.println(str);
}
可以右移後再與0x01進行&運算得到第一位的數字判斷判斷它的第幾位上是0,第幾位上是1,代碼如下:
class ByteMove
{
public static void main(String[] args)
{
int i = 7;
move(i);
}
static void move(int num){
for(int i= 0;i<6;i++){
System.out.println("第"+(i+1)+"位:" + (num >> i & 0x01));
}
}
}
⑸ java中二進制怎麼表示
二進制是計算技術中廣泛採用的一種數制。二進制數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進制系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個非常微小的開關,用「開」來表示1,「關」來表示0。
1、Java中定義兩個數,然後分別列印出它們的二進製表示:
System.out.println("Java二進制7: "+Integer.toBinaryString(7));
System.out.println("Java二進制-7: "+Integer.toBinaryString(-7));
輸出:
Java二進制7:
111
Java二進制-7:
可以看到Java中對於數的表示屬於有符號的,那麼這個是怎麼來的?
7好辦,直接是111
-7轉化二進制的過程:
(1)把-7轉化成7,二進制是
111
(2)Java中對於不滿32位的int二進制自動補齊,所以變成了
(29個0)111
(3)然後取反
(29個1)000
(4)然後加1
(29個1)001
這就是-7的整個轉化過程,那麼現在有一個問題,如果有一個文本文件,每一行有八位二進制,表示的范圍是(0~255),也就是用一個位元組表示的無符號整數,如果現在要把這些二進制轉化成整數存到文件里應該怎麼做?
文件:
line1
11111110
(254)
line2
00000000
(0)
假設用Java讀進了第一行,那麼直接列印出來的值是-2,不符合要求,這時讓-2變254有兩種辦法:
(1)用Java自帶的方法,Byte.toUnsignedInt((byte)
-2)(ps.-2的二進製表示就是line1),這樣列印出來的就是254了
System.out.println(Byte.toUnsignedInt((byte) -2));
輸出:254
第二種方法的原理:
Java中-2的二進製表示:(這個二進制的後八位就是line1,可以直接列印的話Java把其當做了負數
-2)
Java中255的二進製表示:(24個『0』,8個『1』)
做與後變為:
這樣做與後表示的數就是正數了
254。可以想一下,假設每一行用2個位元組表示一個無符號數,那麼可以把每一行變成正整數用方法2怎麼做?
2.Java中的>>和>>>
'>>'
算術右移,向右移左邊補符號位
'>>>'
邏輯右移,向右移左邊補0
System.out.println("Java二進制-7: "+Integer.toBinaryString(-7));
System.out.println("-7>>2: "+Integer.toBinaryString(-7>>2));
System.out.println("-7>>>2: "+Integer.toBinaryString(-7>>>2));輸出:
Java二進制-7:
-7>>2:
-7>>>2: //正常應該這樣(00)左邊的兩個0不顯示
⑹ java的string中有什麼方法可以將二進制轉為十進制或ASCII碼
byte[]bytes;//設為二進制文件流, 顯示為字元
for(inti=0;i<bytes.length;i++){
System.out.println((char)bytes[i]);
}
⑺ 二進制轉換成16進制 java string
如果使用jdk提供的方法,示例代碼如下:
String str="11111111"; //要轉化的二進制碼
int i=Integer.parseInt(str,2); //轉成10進制
String hex=Integer.toHexString(i); //轉成16進制
System.out.println(hex);
⑻ 求助 java 十進制轉為二進制 stringbuild
Integer.toBinaryString(Integer.parseInt("1234"));
public static String toBinaryString(int i)以二進制(基數 2)無符號整數形式返回一個整數參數的字元串表示形式。
如果參數為負,該無符號整數值為參數加上 232;否則等於該參數。將該值轉換為二進制(基數 2)形式的無前導 0 的 ASCII 數字字元串。如果無符號數的大小為零,則用一個零字元 '0' (』\u0030』) 表示它;否則,無符號數大小的表示形式中的第一個字元將不是零字元。字元 '0' ('\u0030') 和 '1' ('\u0031') 被用作二進制數字。
參數:
i - 要轉換為字元串的整數。
返回:
用二進制(基數 2)參數表示的無符號整數值的字元串表示形式。
public static int parseInt(String s)
throws NumberFormatException將字元串參數作為有符號的十進制整數進行解析。除了第一個字元可以是用來表示負值的 ASCII 減號 '-' ('\u002D') 外,字元串中的字元都必須是十進制數字。返回得到的整數值,就好像將該參數和基數 10 作為參數賦予 parseInt(java.lang.String, int) 方法一樣。
參數:
s - 包含要解析的 int 表示形式的 String。
返回:
用十進制參數表示的整數值。
拋出:
NumberFormatException - 如果字元串不包含可解析的整數。