转换
十进制转换为其他进制,采用“除余法”,要转换的书a除以目标进制x,每一级生成的余数逆序拼接起来就是转换为目标进制的表示方式:
二进制运算
7中基本运算类型:
- 按位与&:两位全是1,结果才为1;(1.清零指定位;2.取指定位):
- 按位与 |:只要有一位为1,则结果为1;(1.对指定位置1)
- 异或运算 ^:对应位不同,则结果位为1;(与111相异或,翻转对应位(与111……相异或两次,则值恢复原状),与0相异或,值不改变;交换两个变量值最快的方式:A=A^B;B=A^B;A=A^B)
- 取反 ~,1变0,0变1;
- 左移运算 <<:左边丢弃,右边补0:如果丢弃位(高位)没有1,则每移动一位相应的二进制表现为乘2;
- 右移运算>>:负数左补1,正数左补0,右边丢弃;若丢弃位没有1,则每右移一位,则操作数除以2;
- 无符号右移>>>:左边空位0填充,右边位被丢弃
重点:负数用正数的补码形式表示
- 原码:整数其绝对值对应的二进制数称为原码;
- 反码:将原码的每一位取反,则称为原二进制数的反码;一个数的原码和反码互为反码
- 补码:反码加1,则为原二进制数的补码;
由上可知求二进制负数对应的数时
给一个最高位(32)为1的二进制形式负数;
1.二进制数减1,取得原数的反码;
2.反码取反,得到原数的原码;
3.求出原码的值,取负即为原数的十进制形式;
java中的进制
八种基本类型和对应的包装器类:
little-endian法将int转换为字节
示例:little-endian:低位存放在低地址
int x=8243;
byte [] bytes=new byte[4];
bytes[0]=(byte)(x>>0*8&0xff);//0xff是1111 1111,一个字节,8bit(位)的最大值
bytes[1]=(byte)(x>>1*8&0xff);
bytes[2]=(byte)(x>>2*8&0xff);
bytes[3]=(byte)(x>>3*8&0xff);
3.java中八、十六进制的表示:八进制前置0,十六进制前置‘0x’或者‘0X’;
4.java中将二进制转换为2、8、16进制的相应函数:Integer.toBinaryString(x); Integer.toOctalString(x); Integer.toHexString(x);