L19_11 位运算实例
题目:
位运算实例,已知一个正整数变量,对这个数的二进制数列进行下面的操作,依次使用位运算符号写出操作方式:
1)将最后一位的右边加上一个,例如变为
答:将左移一位,然后加,就是
2)将最后一位变为,例如或者处理后都变成
答:
方法一:最后一位直接变成 不太好办,可以直接变成,然后再想办法减去就行了:构造一个数字,然后用与进行按位取或
,就把最后一位变成了1
,其它各位保留原来的样子:
方法二:构造一个前面都是,最后一位是的家伙,然后与原来的数字进行与运算,就可以把最后一位变成,其它各位不变。那么,什么数字是前面都是1,最后一位是0呢?这就需要单独记忆一下了:的二进制表示就是前面都是1,最后一位是0.
原因:
原码 0010
反码 1101
补码 1110
3)取末5位序列,例如处理后得到
答:构造一个右边5个是1,左边都是0的数,然后两者相与。就是 000...00 11111,而这个前面都是0,后5个是1的数字,就是 ,所以表达式:
4)去掉序列中最右边的1的左边所有数字,例如1101 1000 取到右边的1000
答:就是保留最右边的那个1,这是位运算的经典方法:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2019-08-19 哈尔滨幼儿师专项目部署安装过程小记
2016-08-19 需要了解的项目