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