mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
370 字
2 分钟
【算法笔记】(一)二进制和位运算
2026-01-08
统计加载中...

1、负数的二进制#

  • 十进制负数转换为二进制: 负数的正数二进制表示 -> 减一 -> 取反
  • 二进制的负数转换为十进制: 取反 -> 加一 -> 正数二进制表示

注意:最小负数的二进制表示是它本身


2、位运算#

运算符名称作用对象运算效果示例结果
&按位与整数两位都为 1 才为 16 & 32(110 & 011 = 010)
|按位或整数有一位为 1 就为 16 | 37(110
^按位异或整数两位不同为 1,相同为 06 ^ 35(110 ^ 011 = 101)
~按位取反整数0→1,1→0(补码)~6-7
<<左移整数左移 n 位,右侧补 0(≈×2ⁿ 只对非负数有效)3 << 212
>>算术右移整数右移 n 位,左侧补符号位(≈÷2ⁿ 只对非负数有效 向下取整)-8 >> 1-4
>>>逻辑右移整数右移 n 位,左侧补 0(无符号右移)-8 >>> 12147483644(int)
  • 一个整数的相反数 = 取反 + 1(但是负数的最小值不适用)

3、如何打印二进制?#

public static void printBinary (int n) {
for (int i = 31 ;i >= 0 ; i --) {
System.out.print((n & (1 << i)) == 0 ? "0" : "1");
}
System.out.println();
}

注意: 1、由于运算符优先级的问题,n & (1 << i) == 0 会被解析为 n & ((1 << i) == 0),因此我们需要括号来规定优先级 2、代码所展示的是int类型,对于long类型,需要写成n & (1L << i)

【算法笔记】(一)二进制和位运算
http://hgqwd.icu/posts/suanfa1/
作者
天线宝宝死于谋杀
发布于
2026-01-08
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00