【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 。

相关推荐

  1. <span style='color:red;'>C</span>++<span style='color:red;'>例子</span>

    C++例子

    2024-07-22 05:30:02      32 阅读
  2. .NETC#和PLC交互的例子

    2024-07-22 05:30:02       25 阅读
  3. C均值算法例子

    2024-07-22 05:30:02       41 阅读
  4. C++】位运算相关算法问题

    2024-07-22 05:30:02       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 05:30:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 05:30:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 05:30:02       45 阅读
  4. Python语言-面向对象

    2024-07-22 05:30:02       55 阅读

热门阅读

  1. setup中如何获取组件实例

    2024-07-22 05:30:02       17 阅读
  2. 编程中的智慧五:工厂设计模式

    2024-07-22 05:30:02       20 阅读
  3. 模型瘦身术:目标检测中的剪枝与量化

    2024-07-22 05:30:02       18 阅读
  4. 前端面试题日常练-day100 【Less】

    2024-07-22 05:30:02       15 阅读
  5. C++顶层const和底层const

    2024-07-22 05:30:02       17 阅读
  6. HOW - React 处理不紧急的更新和渲染

    2024-07-22 05:30:02       18 阅读
  7. kafka 基础知识

    2024-07-22 05:30:02       16 阅读
  8. 欧拉路径与欧拉回路

    2024-07-22 05:30:02       19 阅读
  9. Linux grep技巧 提取log中的json数据

    2024-07-22 05:30:02       13 阅读
  10. Python 异常处理

    2024-07-22 05:30:02       14 阅读
  11. Python中的__new__方法及实现单例模式

    2024-07-22 05:30:02       14 阅读
  12. FlowUs横向对比几款笔记应用的优势所在

    2024-07-22 05:30:02       16 阅读