当前位置:网站首页>位运算符讲解
位运算符讲解
2022-07-04 22:31:00 【&volume】
目录
1.>> 右移
2.<<左移
最近接触了位运算符,我认为位运算符在一些题中的使用是很巧妙得,而且它也是算是一个入门算法。
位运算符有,与,或,非,异或,移位运算符
位运算符实际是采取二进制进行运算,
与(&)
两个二进制操作数对应位同为1 结果位 才为1,其余情况为0;
10进制数 15 二进制 00001111
14 00001110
15&14= 14(00001110)
# include <stdio.h>
int main()
{
printf("%d",14&15);
return 0;
}
或(|)
两个二进制操作数对应位只要有一个为1 结果位 就为1,其余情况为0
10进制数 15 二进制 00001111
14 00001110
15|14=15(00001111)
# include <stdio.h>
int main()
{
printf("%d",14|15);
return 0;
}
非(~)
一个二进制操作数,对应位为0,结果位为1;对应位为1,结果位为0;
取反后得到的是原码 而进行存储时是存储的补码,得到补码的过程要先得到反码
10进制数 8 二进制 0000 1000
(~8)=-9(1000 1001)
取反后原码:1111 0111
取反后反码:1000 1000(除了符号位 其余位都进行取反操作)
取反后补码:1000 1001 补码(因为为负数所以加一) 如果为正数不需要进行加一
# include <stdio.h>
int main()
{
printf("%d",~15);
return 0;
//00001000
//11110111 取反原码
//10001000 取反反码
//10001001 补码(因为为负数所以加一)
}
异或(^)
同为假,异为真
10进制数 15 二进制 00001111
14 00001110
15^14=1(0000001)
# include <stdio.h>
int main()
{
printf("%d",14^15);
return 0;
}
移位运算符
1.>> 右移
按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。(高位用符号位补充-------正数右移还是正数 负数右移还是负数)
语法:需要移位的数字number >> 移位的次数
13>>2=3
13的二进制位(1101)向右移动两位变成3(11)
性质(在整数下):右移相当于用该数除以2的移位次数再向下取整
13/(2^2)向下取整为3
2.<<左移
将一个数的二进制同时往左移位,低位用0补充
5<<1=10
5(101)向右移动1位 (1010)=10、
性质同上右移
是5*2^1=10
边栏推荐
- Unity vscode emmylua configuration error resolution
- 记录:关于Win10系统中Microsoft Edge上的网页如何滚动截屏?
- Redis入门完整教程:事务与Lua
- How to send a reliable request before closing the page
- 业务太忙,真的是没时间搞自动化理由吗?
- Redis入门完整教程:哈希说明
- 攻防世界 MISC 进阶区 hit-the-core
- The Sandbox 和数字好莱坞达成合作,通过人力资源开发加速创作者经济的发展
- 通过Go语言创建CA与签发证书
- Test will: bug classification and promotion solution
猜你喜欢
Attack and defense world misc advanced area ditf
攻防世界 MISC 進階區 Erik-Baleog-and-Olaf
Hit the core in the advanced area of misc in the attack and defense world
Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
小程序vant tab组件解决文字过多显示不全的问题
业务太忙,真的是没时间搞自动化理由吗?
攻防世界 MISC 进阶 glance-50
A complete tutorial for getting started with redis: redis shell
【室友用一局王者荣耀的时间学会了用BI报表数据处理】
Set up a website with a sense of ceremony, and post it to 1/2 of the public network through the intranet
随机推荐
记录:关于Win10系统中Microsoft Edge上的网页如何滚动截屏?
Google Earth Engine(GEE)——基于 MCD64A1 的 GlobFire 日常火灾数据集
Attack and defense world misc advanced area can_ has_ stdio?
Create Ca and issue certificate through go language
SQL中MAX与GREATEST的区别
Record: how to scroll screenshots of web pages on Microsoft edge in win10 system?
Redis入门完整教程:键管理
Redis入门完整教程:Redis使用场景
Erik baleog and Olaf, advanced area of misc in the attack and defense world
攻防世界 MISC 進階區 Erik-Baleog-and-Olaf
Introducing QA into the software development lifecycle is the best practice that engineers should follow
剑指 Offer 67. 把字符串转换成整数
leetcode 72. Edit distance edit distance (medium)
Prosperity is exhausted, things are right and people are wrong: where should personal webmasters go
Analysis of environmental encryption technology
Analysis of the self increasing and self decreasing of C language function parameters
Advanced area a of attack and defense world misc Masters_ good_ idea
[try to hack] wide byte injection
浅聊一下中间件
Close system call analysis - Performance Optimization