当前位置:网站首页>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
边栏推荐
- Judge whether the stack order is reasonable according to the stack order
- Possible stack order of stack order with length n
- Use threejs to create geometry and add materials, lights, shadows, animations, and axes
- 反絮凝剂-氨碘肽滴眼液
- 3. Package the bottom navigation tabbar
- lds链接的 顺序问题
- How to realize real-time audio and video chat function
- Un réveil de l'application B devrait être rapide
- 根据入栈顺序判断出栈顺序是否合理
- 【刷题】BFS题目精选
猜你喜欢
The scale of computing power in China ranks second in the world: computing is leaping forward in Intelligent Computing
The new project Galaxy token just announced by coinlist is gal
This article takes you to understand the relationship between the past and present of Bi and the digital transformation of enterprises
Interview summary: This is a comprehensive & detailed Android interview guide
The development of mobile IM based on TCP still needs to keep the heartbeat alive
Online sql to excel (xls/xlsx) tool
EasyCVR平台出现WebRTC协议视频播放不了是什么原因?
Why do big companies such as Baidu and Alibaba prefer to spend 25K to recruit fresh students rather than raise wages by 5K to retain old employees?
陇原战“疫“2021网络安全大赛 Web EasyJaba
UI automation test farewell to manual download of browser driver
随机推荐
Online text line fixed length fill tool
Mixed compilation of C and CC
Summary of scene design
Rome chain analysis
Un réveil de l'application B devrait être rapide
测试开发是什么?为什么现在那么多公司都要招聘测试开发?
Redis source code analysis: redis cluster
kubernetes集群之调度系统
UI automation test farewell to manual download of browser driver
MindFusion. Virtual Keyboard for WPF
为什么百度、阿里这些大厂宁愿花25K招聘应届生,也不愿涨薪5K留住老员工?
Rust blockchain development - signature encryption and private key public key
Judge whether the stack order is reasonable according to the stack order
在线文本行固定长度填充工具
技术教程:如何利用EasyDSS将直播流推到七牛云?
Phpmailer reported an error: SMTP error: failed to connect to server: (0)
Get to know MySQL connection query for the first time
Why do big companies such as Baidu and Alibaba prefer to spend 25K to recruit fresh students rather than raise wages by 5K to retain old employees?
Clickpaas low code platform
Threejs Internet of things, 3D visualization of farms (II)