一:位运算
/1/左移运算符:相当于*2,因为左移相当于2的1,2,3次方;
/2/在Java中是有符号整数型,正的负的各分一半,最高位代表符号位,所以最多是31次。负数的绝对值比正数多1,因为非负领域有个0,所以他的最大值要小1;
/3/负数怎么表示:最高位为1,后边的数字取反+1;
/4/为什么要这么表示负数:所有的算数符号+-/*,底层都是由位运算实现的。底层的位运算因为有一套特定的运算方式,不管正负,所以把负数定义成这个模式,使得底层运算时可以执行一套逻辑,而不用分出正负的模式;
/5/亦或:相同为0,不同为1;
/6/右移运算符
1)>>带符号右移
左边用1补齐
1)>>>不带符号右移(负数)
左边用0补
/7/相反数怎么求:-c 或者 对~c + 1;
1.把一个整数打印成32位数
思路分析:
整数是int型,32位数,long64位数。1 << i 位使得i位为1,与原整数进行&与运算(都为1才是1)。如果与完是1,则说明该整数在i位置是1,用三目运算符进行判断。
代码实现:
package Base;
/*
打印一个数字的32进制
*/
public class Code01 {
public static void main(String[] args) {
int num = 1;
get32(num);
}
public static void get32(int num){
for (int i = 31; i >=0 ; i--) {
System.out.print((num & (1 << i)) == 0 ? "0" : "1");
}
}
}