㈠ 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));
}
}
}
㈡ 設x=015,求 x=x^017的值。具體的講一下謝謝
結果為十進制數2八進制數02。
C語言裡面以0開頭的數字是八進制數。「^」為異或運算符。
根據8進制到2進制的轉換關系,
1) 015---001101,017---001111(1位八進制數轉換成3位2進制數,開頭的0是八進制標志,不用轉換)
2) 根據異或運算的規則:0^0=0,1^1=0,0^1=1,1^0=1
015^017=001101^001111=000010=02(八進制)=2(十進制)
㈢ 進制問題
除2取余。最後從下往上連起來。
㈣ 急急急!unsigned int x=015,y=0x2b;求~x+~y 求詳細過程!
x=015是8進制,換成二進制就是001101
y=0x2b是16進制,換成二進制是00101011
~表示取反
32位機的話,~x=0xfffffff2;~y=0xffffffd4;相加結果溢出,值為0xffffffc6,換成十進制是-58
因為系統默認輸出的是有符號數,如果想輸出無符號數,不用%d,而用%u
㈤ unsigned int x=015,x<<1,x<<2,x<<3分別是多少為什麼
unsigned int x=015,
x=015,用0打頭的說明是八進制數,由於後面要進行左移操作,所以轉換為二進制看比較方便。
015(八進制)=1101(二進制)
<<:這個是左移操作符,按位左移,末尾補零
>>:這個是右移操作符,按位右移,前端補零
x<<1:左移一位,1101(二進制)左移一位變為11010(二進制),11010(二進制) = 26(十進制)
x<<2:左移兩位,1101(二進制)左移兩位變為110100(二進制),110100(二進制) = 52(十進制)
x<<3:左移三位,1101(二進制)左移三位變為1101000(二進制),1101000(二進制) = 104(十進制)
現在你應該也看出來了,左移N位就相當於原數乘以2的N次方
㈥ 如何用JAVA編寫一段代碼把整數轉換成2進製表示
十進制到其他進制的轉換
十進制整數轉換成二進制整數,返回結果是一個字元串:
Integer.toBinaryString(int
i);