对于整数,有四种表示方式: 二进制: 0,1,满2进1.以0b或OB开头。 十进制: 0-9 ,满10进1。 八进制: 0-7,满8进1.以数字О开头表示。 十六进制:0-9及A(10)-F(15),满16进1.以0x或OX开头表示。此处的A-F不区分大小写1.2 进制的图
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。 案例:请将0b1011转成十进制的数 0b1011 =1*2的(1-1)次方+1 *2的(2-1)次方+0*2的(3-1)次方+1*2的(4-1)次方法=1 +2+0+8=112.2 八进制转换成十进制示例
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和。 案例:请将0234转成十进制的数 0234= 4*8^0+ 3*8 ^1+2*8 ^2= 4 + 24+128=1562.3 十六进制转换成十进制示例
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。 案例:请将0x23A转成十进制的数 0x23A=10*16^0+3*16 ^1+2*16 ^2=10+48+512 =5702.4 十进制转换成二进制
规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。 案例:请将34 转成二进制=0B001000102.5 十进制转换成八进制
规则:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制。 案例:请将131转成八进制=>02032.6 十进制转换成十六进制
规则:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制。 案例:请将237转成十六进制=>OxED2.7 二进制转换成八进制
规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可。 案例:请将ob11010101转成八进制 ob11(3)010(2)101(5) => 03252.8 二进制转换成十六进制
规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可。 案例:请将 ob11010101转成十六进制 ob1101(D)0101(5) = 0xD52.9 八进制转换成二进制
规则:将八进制数每1位,转成对应的一个3位的二进制数即可。 案例:请将0237转成二进制 02(010)3(011)7(111)=0b100111112.10 十六进制转换成二进制
规则:将十六进制数每1位,转成对应的4位的一个二进制数即可。 案例:请将0x23B转成二进制 Ox2(0010)3(0011)B(1011) = 0b0010001110113 二进制在运算中的说明
1.二进 制是逢2进位的进位制,0、1是基本算符。 2.现代的电子计算机技术全部采用的是二进制,因为它只使用O、1两个数字符号, 非常简单方便,易于用电子方式实现。计算机内部处理的信息,都是采用二进制数来表示的。二进制(Binary)数用0和1两个数字及其组合来表示任何数。进位规则是"逢2进1",数字1在不同的位上代表不同的值,按从右至左的次序,这个值以二倍递增。4 原码、反码、补码(重点难点) 5 位于运算符
java 中有7个位运算(&、|、^ 、~、>>、<<和>>>)
//推导过程 //1. 先得到 2的补码 => 2的原码 00000000 00000000 00000000 00000010 // 2的补码 00000000 00000000 00000000 00000010 //2. 3的补码 3的原码 00000000 00000000 00000000 00000011 // 3的补码 00000000 00000000 00000000 00000011 //3. 按位& // 00000000 00000000 00000000 00000010 // 00000000 00000000 00000000 00000011 // 00000000 00000000 00000000 00000010 & 运算后的补码 // 运算后的原码 也是 00000000 00000000 00000000 00000010 // 结果就是 2 System.out.println(2&3);//2 //推导 //1. 先得到 -2的原码 10000000 00000000 00000000 00000010 //2. -2的 反码 11111111 11111111 11111111 11111101 //3. -2的 补码 11111111 11111111 11111111 11111110 //4. ~-2操作 00000000 00000000 00000000 00000001运算后的补码 //5. 运算后的原码 就是 00000000 00000000 00000000 00000001 => 1 System.out.println(~-2);//1 //推导 //1. 得到2的补码 00000000 00000000 00000000 00000010 //2. ~2操作 11111111 11111111 11111111 11111101 运算后的补码 //3. 运算后的反码 11111111 11111111 11111111 11111100 //4. 运算后的原码 10000000 00000000 00000000 00000011=>-3 System.out.println(~2); //-3