算法与数据结构刷题笔记-P1:位运算
1.位运算
&
:与|
:或^
:异或~
:取反
1.1打印int数字的二进制形式
&
:与运算- int :有符号整型 ,32位
- 有符号整型int 32位 0-30位; 31位为符号位,0代表正数,1代表负数
- 负数表示 :最高位符号位 1,其余位 取反+1
- 正数表示:除符号位,其余位 按照 2的次方加起来
<<
: 左移
package com.jq.LeetCode;
/***
* 位运算:打印二进制,32
* int : 有符号整型 32位
*/
public class Code1_PrintB {
public static void main(String[] args) {
//32位
int num =8;
print(num);
}
public static void print(int num){
for (int i = 31; i >=0 ; i--) {
//1<<i 1向左移动 i 位 ,左移后补0
System.out.print((num&(1<<i))==0 ? "0":"1");
}
System.out.println();
}
}
1.2 >> 与>>>
>>
:带符号右移,用1来补
>>>
:不带符号右移,用0来补
1.3相反数
- 对于整数N 相反数为
~N+1=-N
- 最小数的相反数是自己
- 0取反还是自己