当前位置: 首页 > news >正文

【C#】| 与 及其相关例子

按位或(|)

按位或运算符 | 对两个数的每一位进行比较,如果两个数中至少有一个为 1,则结果位为 1;否则,结果位为0。

  1010  (10 in decimal)
| 1100  (12 in decimal)
------1110  (14 in decimal)

 力扣相关题目——传送门

public class Solution {public string ToLowerCase(string s) {StringBuilder sb = new StringBuilder();foreach(char c in s){char cNew = (int) c >= 65 && (int) c <= 90 ? (char) (c|32) : (char) c ;sb.Append(cNew);}return sb.ToString();}
}
/*
大写字母 A - Z 的 ASCII 码范围为 [65,90]:
小写字母 a - z 的 ASCII 码范围为 [97,122]。
*/

例如,大写字母 A 的 ASCII 码值 65 的二进制表示是0100 0001_{2},与 32 的二进制表示0010 0000_{2}进行或操作后得到0110 0001_{2},这是小写字母 a 的 ASCII 码值 97 的二进制表示。

顺便扩充下知识——明明只有26个字母,为什么大小字母之间是差32而不是26?

按位与(&)

按位与运算符 & 对两个数的每一位进行比较,只有当两个数的对应位都为 1 时,结果位才为 1;否则,结果位为0。

  1010  (10 in decimal)
& 1100  (12 in decimal)
------1000  (8 in decimal)

 力扣相关题目——传送门

public class Solution {public bool IsPowerOfTwo(int n) {// 按位与if (n <= 0){return false;}return (n & (n - 1)) == 0;}
}

如果 n 是 2 的幂次方,当且仅当 n 是正整数,则 n 的二进制表示中仅包含 1 个 1。

因此我们可以考虑使用位运算,将 n 的二进制表示中最低位的那个 1 提取出来,再判断剩余的数值是否为 0 即可。n 与 n - 1进行按位与操作(&)的结果为0,这是因为 n - 1 的二进制表示是 n 的二进制表示中从最低位的1开始到最低位的所有位都翻转。例如,8=1000_{2}7=0111_{2}进行按位与操作的结果是0000_{2},则可以判断 8 是 2 的幂次方,因为剩余的数值为 0 ;又如,9 = 1001_{2}8 = 1000_{2}进行按位与操作的结果是1000_{2},则可以判断 9 不是 2 的幂次方,因为剩余的数值不为 0 。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • [Doris]阿里云搭建Doris,测试环境1FE 1BE
  • k8s学习笔记——dashboard安装
  • KAFKA搭建教程
  • 国产麒麟、UOS在线打开pdf加盖印章
  • C语言:键盘录入案例
  • Android 视频音量图标
  • 视觉巡线小车——STM32+OpenMV
  • MySQL8的备份方案——差异备份(CentOS)
  • 最新 Docker 下载镜像超时解决方案:Docker proxy
  • 【Python数据分析】数据分析三剑客:NumPy、SciPy、Matplotlib中常用操作汇总
  • R语言学习笔记10-向量-矩阵-数组-数据框-列表对比
  • 神经网络中如何优化模型和超参数调优(案例为tensor的预测)
  • 【HarmonyOS开发】弹窗交互(promptAction )
  • opencv,连续拍摄多张图像求平均值减少噪点
  • 均值滤波算法及实现
  • 【EOS】Cleos基础
  • Apache的基本使用
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • egg(89)--egg之redis的发布和订阅
  • Java的Interrupt与线程中断
  • Java基本数据类型之Number
  • Js基础知识(四) - js运行原理与机制
  • JS学习笔记——闭包
  • laravel with 查询列表限制条数
  • Laravel 实践之路: 数据库迁移与数据填充
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Linux各目录及每个目录的详细介绍
  • Node 版本管理
  • oldjun 检测网站的经验
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Swoft 源码剖析 - 代码自动更新机制
  • Vue实战(四)登录/注册页的实现
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 猴子数据域名防封接口降低小说被封的风险
  • 记一次用 NodeJs 实现模拟登录的思路
  • 解析 Webpack中import、require、按需加载的执行过程
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 我的面试准备过程--容器(更新中)
  • 我看到的前端
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 优化 Vue 项目编译文件大小
  • gunicorn工作原理
  • kubernetes资源对象--ingress
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • #define 用法
  • #QT(串口助手-界面)
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (03)光刻——半导体电路的绘制
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (10)STL算法之搜索(二) 二分查找