当前位置:网站首页>Bit operation skills
Bit operation skills
2022-07-05 04:06:00 【Phyllostachys pubescens】
-------------------------
Judge odd and even numbers
1110 1111
0001 0001
0000 0001 // if((a&1)==0){}
-------------------------
Exchange two numbers
1001 a
1010 b
0011 a=a^b
1010 b
1001 b=a^b
0011
1001
1010 a=a^b
----------------------------
Multiplication and division
100>>1 10 // 4->2
100<<1 1000 //4->8
--------------------------------
Exchange symbols
0 1000 Take the opposite
1 0111 +1
1 1000
---------------------------------
High low swap a=(a<<4)|(a>>4)
1100 1011
a>>4
0000 1100
a>>4
1011 0000
Take or
1011 1100
------------------------
Statistics 1 The number of
1011 a&(a-1)
1010
1010
1001 a&(a-1)
1000
One less for each execution 1
-----------------------------
-----------------------------
Binary addition 5+3
0101 0101
0011 0011
^ 0110 0001 <<1 0010
public int add(int a, int b){
int a=a^b;
int b=a&b;
b<<1;
if(b==0) return 0;
else{
return Add(a,b);
}
}
----------------------------------
Only once , Other numbers appear 2 Time
1101
0000
1101
0 And any number ^ For itself
1101
1101
0000
Two identical numbers ^ The result is 0
Method : use 0 And each value in the array ^ operation , The result of the operation is the number that occurs once
---------------------------------------------------------------
Only once , Other numbers appear 3 Time
In the specific operation implementation , The data in the array is given in the problem int Within limits ,
So we can implement int Of 32 Each bit is judged in turn 1 The remainder of the number of 3 Is it 1,
If 1 The result shows that the bit is 1 You can add the results . The final value is the answer 、
class Solution {
public int singleNumber(int[] nums) {
int value=0;
for(int i=0;i<32;i++)
{
int sum=0;
for(int num:nums)
{
if(((num>>i)&1)==1)
{
sum++;
}
}
if(sum%3==1)
value+=(1<<i);
}
return value;
}
}
// Bit operation to achieve multiplication and division
int a=2;
a>>1; // Move right 1 position , It's equivalent to dividing 2 , The result is 1
a<<1; // Move left 1 position , It's equivalent to riding 2 , The result is 4
// Bit operations swap two numbers , No need for temporary variables , Efficiency is higher than ordinary operation
void Swap(int &a, int &b){
a=a+b;
b=a-b;
a=a-b;
}
void swap(int &a,int &b){
a=(a^b);
b=(b^a);
a=(a^b);
}
// Judge odd and even numbers
if(0==(a&1){
// even numbers
}
// Bit operation exchange symbol
int reversal(int a){
return ~a +1;
}
// Bit operation to find the absolute value
int abs(int a){
int i=a>>31;
return i==0?a:(~a+1);
}
// Bit operation for high and low bit switching
unsigned short a=34520;
a=(a>>8)|(a<<8)
// Bit operation in binary reverse order
unsigned short a = 34520;
a = ((a & 0xAAAA) >> 1) | ((a & 0x5555) << 1);
a = ((a & 0xCCCC) >> 2) | ((a & 0x3333) << 2);
a = ((a & 0xF0F0) >> 4) | ((a & 0x0F0F) << 4);
a = ((a & 0xFF00) >> 8) | ((a & 0x00FF) << 8);
// In statistical binary 1 The number of
count = 0
while(a){
a = a & (a - 1); // One less for each execution 1
count++;
}
// Eliminate the last one 1
x=1100
x-1=1011
x&(x-1)=1000
// a&b&b =a
边栏推荐
- Rome链分析
- Rome chain analysis
- How to realize real-time audio and video chat function
- “金九银十”是找工作的最佳时期吗?那倒未必
- EasyCVR平台出现WebRTC协议视频播放不了是什么原因?
- [wp][introduction] brush weak type questions
- [brush questions] BFS topic selection
- Resolved (sqlalchemy+pandas.read_sql) attributeerror: 'engine' object has no attribute 'execution_ options‘
- Behavior perception system
- error Couldn‘t find a package. JSON file in "your path“
猜你喜欢
Clickhouse synchronization MySQL (based on materialization engine)
NEW:Devart dotConnect ADO. NET
Ctfshow web entry code audit
[brush questions] BFS topic selection
基于TCP的移动端IM即时通讯开发仍然需要心跳保活
Laravel8 export excel file
Pyqt pyside custom telescopic menu bar sharing (including tutorial)
Why can't all browsers on my computer open web pages
Threejs implements labels and displays labels with custom styles
Redis source code analysis: redis cluster
随机推荐
C语言课设:影院售票管理系统
Web components series (VII) -- life cycle of custom components
阿里云ECS使用cloudfs4oss挂载OSS
Differences among 10 addressing modes
@Transactional 注解导致跨库查询失效的问题
MindFusion.Virtual Keyboard for WPF
面试字节,过关斩将直接干到 3 面,结果找了个架构师来吊打我?
It took two nights to get Wu Enda's machine learning course certificate from Stanford University
Judge whether the stack order is reasonable according to the stack order
企业级:Spire.Office for .NET:Platinum|7.7.x
陇原战“疫“2021网络安全大赛 Web EasyJaba
Alibaba cloud ECS uses cloudfs4oss to mount OSS
Laravel8 export excel file
Is there a sudden failure on the line? How to make emergency diagnosis, troubleshooting and recovery
在线文本行固定长度填充工具
speed or tempo in classical music
A應用喚醒B應該快速方法
Scheduling system of kubernetes cluster
Threejs Internet of things, 3D visualization of farms (II)
IronXL for . NET 2022.6