用位专题

刷题笔记2:用位运算找“只出现一次的一个数”

1. & 和 | 的基本操作 137. 只出现一次的数字 II - 力扣(LeetCode) 先对位运算的操作进行复习: 1、>> 右移操作符 移位规则:⾸先右移运算分两种: 1. 逻辑右移:左边⽤0填充,右边丢弃 2. 算术右移:左边⽤原该值的符号位填充,右边丢弃 一般的编译器都默认使用算术右移。 2. << 左移操作符 移位规则:左边抛弃、右边补0

leetcode——用位运算来做2的幂次方和比特位计数问题

231.给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例 1: 输入: 1 输出: true 解释: 20 = 1 示例 2: 输入: 16 输出: true 解释: 24 = 16 示例 3: 输入: 218 输出: false 思路: 可以用mod去摸运算来做,也可以用 l o g 2 log_{2} log2​得到int数 但是最快捷的方法还是用位运算,因为不管是2

用位运算生成分形

#include<cstdio>int main(){int i, j, n = 64;for (i = 0; i < n; i++){for (j = 0; j <= n; j++)putchar((i & j) == j ? '*' : ' ');putchar(10);}return 0;}

用位示图管理磁盘空间实现磁盘块的分配与回收

(1)假定现有一个磁盘组,共有48个柱面。每个柱面有4个磁道,每个磁道又划分成4个物理记录。磁盘的空间使用情况用位示图表示。位示图用若干个字构成,每一位对应一个磁盘块。“1”表示占用,“0”表示空闲。假定字长为16位,一个字可用来模拟磁盘的一个柱面,其位示图如下图所示。系统设置一个变量S记录当前的空闲磁盘块个数。位示图的初始状态为第1个字为“1”,其他全部空闲。 字/位 0 1 2 3

C++学习笔记-----用位运算实现加减乘除

数据在计算机内存中是以二进制存储的。 几种常用的位运算: 与运算&: 对应位均为1时为1,其它为0。或运算|: 对应位均为0时为0,其它为1。异或运算^: 对应位不相同时为1,相同时为0.按位取反~: 每一位取反右移>>: 将二进制进行右移,低位丢掉,高位补零。左移<<: 将二进制进行左移,低位补零,高位丢掉。 加法 以0111 + 0101为例,观察异或运算和与运算的结果 0111 ^

统计二叉树中的伪回文路径 : 用位运用来加速??

题目描述 这是 LeetCode 上的 「1457. 二叉树中的伪回文路径」 ,难度为 「中等」。 Tag : 「DFS」、「位运算」 给你一棵二叉树,每个节点的值为 1 到 9 。 我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。 请你返回从根到叶子节点的所有路径中伪回文路径的数目。 示例 1: 输入:root = [2,3,1,3,1,n

用位运算实现加减乘除法

我们知道计算机只认识0和1,而计算机在计算加减乘除的是也不是我们理解的直接预算,而是通过逻辑运算来实现的,也就是与、非、或、异或,下面就通过这些逻辑运算符来实现加减乘除法 加法:比如1+1用二进制表示就是00000001+00000001,那么在不允许直接使用加号的时候,我们就可以用异或来实现加法,异或实际上就可以理解为不进位的加法,00000001异或00000001就等于00000000,丢