进制转换
package junit;
public class Test {
public static void main(String[] args) {
// int a=Integer.MIN_VALUE;
int b=Integer.MAX_VALUE;
int c=Integer.MIN_VALUE;
System.out.println(b);
System.out.println(c);
print(b);// 最高位表示 符号位 最高位0 表示正数 最高位为1 表示负数 java中整型的最大值为 2的31次方减1 第32位表示数的正负 0-31位表示数的值
print(c);
//~ 运算符 取反
print(~c);
print(-5);
// 11111111111111111111111111111011
/*
* 第32位表示符号位
* 0~31位表示 值
* 将0~31的值 取反之后 加一 最终的值为 十进制
* 1 1111111111111111111111111111011
* ~取反
* 1 0000000000000000000000000000100
* +1
* 1 0000000000000000000000000000101 表示十进制的5
* 2的1次方 加 2的0次方 加 2的1次方 =2+1+2 =5
* */
//无符号数值的范围为 0~2的32次方减1 有符号数值的范围为 -2的31次方~2的31次方减1
// print(a);
int a=3;
print(a);
print(a<<1);//左移1位
print(a<<2);//左移2位
/*
* 运算符或 |
* 1 | 0 1
* 1 | 1 1
* 0 | 0 0
* 0 | 1 1
* 有1则1
* */
print(11);
print(22);
print(11|22);
/*
* 运算符 异或 ^
* 1 ^ 0 1
* 1 ^ 1 0
* 0 ^ 0 0
* 0 ^ 1 1
* 相同为0
* 相异为1
*
* */
print(11);
print(22);
print(11^22);
/*
* 运算符 且 &
* 1 & 0 0
* 1 & 1 1
* 0 & 0 0
* 0 & 1 0
* 相同为0
* 相异为1
* 两个为1 则1 其余为0
* */
print(11);
print(22);
print(11&22);
/*
*
* << 带符号右移
* <<< 不带符号右移
*
*
* */
print(Integer.MIN_VALUE);
print(Integer.MIN_VALUE>>>1);
print(Integer.MIN_VALUE>>1);
/*
* 相反数
*
*
* */
int zz=5;
int zzz=-zz;
int z=(~zz+1);
print(zz);
print(zzz);
print(z);
System.out.println(zz);
System.out.println(zzz);
System.out.println(z);
print(Integer.MIN_VALUE);
print(~Integer.MIN_VALUE);
print(~Integer.MIN_VALUE+1);
System.out.println("--------");
System.out.println(Integer.MIN_VALUE);
System.out.println(~Integer.MIN_VALUE);
System.out.println(-Integer.MIN_VALUE);
System.out.println(~Integer.MIN_VALUE+1);
//选择排序 冒泡排序 插入排序
}
/**
* 将十进制的数 输出为 二进制的数
* @param num
*/
public static void print(int num){
for (int i=31;i>=0;i--){
System.out.print((num&(1<<i))==0?"0":"1");//左移<<
// 1左移31位后 为10000000000000000000000000000000 1个1 31个0
// &运算
/* 1&0 为 0
1&1 为 1
0&0 为 0
0&1 为0 */
}
System.out.println();
}
}