C#位运算基本概念与计算过程
发布日期:2021-05-10 09:24:49 浏览次数:22 分类:精选文章

本文共 1194 字,大约阅读时间需要 3 分钟。

位运算基础

位、字节、字符与存储单位之间的关系

  • 位(Bit)

    Bit(比特)是计算机中数据的最小存储单位,依次只能取0或1的值,二进制系统的基础。

  • 字节(Byte)

    1 Byte = 8 Bit,8位组成一个字节,常见单位包括KB、MB、GB、TB等。

  • 字符(Char)

    1 Char = 2 Bytes = 16 Bit,一个字符通常对应一个字节或两个字节,具体取决于编码方式(如ASCII或Unicode)。

  • 存储单位

    • 1 KB(千字节)= 1024 Bytes
    • 1 MB(兆字节)= 1024 KB
    • 1 GB(吉字节)= 1024 MB
    • 1 TB(泰字节)= 1024 GB
  • 一个汉字通常需要2个字节(16 Bit),因此一个汉字大约需要16个二进制位来表示。


    位运算概述

    运算对象

    位运算适用于全-byte数据类型,尤其是整型(int)、short 和字符(char),它们的二进制表示可以直接用于位操作。

    运算结果

    位运算的结果始终是整型,处理数据时不会改变原数值的位模式,只会进行位操作后的结果保存回整型变量中。


    常用位运算符及示例

    1. 逻辑非运算(~)

    • 符号~
    • 意义:取每一位的逻辑非(0变1,1变0)。
    • 示例
      ~15 = 0b11111111 11111111 // 负一(在有符号整数中)

    2. 逻辑与运算(&)

    • 符号&
    • 意义:对每一位取与运算(与1为1,与0为0)。
    • 示例
      15 & 20 = 4 (二进制0000 0100)

    3. 逻辑或运算(|)

    • 符号|
    • 意义:对每一位取或运算(或1为1,0为0)。
    • 示例
      15 | 20 = 31 (二进制0001 1111)

    4. 位移运算

    • 左移(<<):将数值左移指定位数,左移位数的空位补0。
      15 << 3 = 120 (二进制0111 1000)
    • 右移(>>):将数值右移指定位数,右移位数的空位补0。
      15 >> 3 = 3 (二进制0000 0011)

    位运算的应用场景

    1. 检查奇偶数

    • 方法:可以直接检查最低有效位(最右边一位)是否为1。
    • 代码示例如下
      if (a & 1) {    // 奇数}

    2. 交换两个变量的值

    • 代码示例如下
      int a = 10, b = 20;a ^= b; // a = 10 ^ 20 = 30  b ^= a; // b = 20 ^ 30 = 10  a ^= b; // a = 30 ^ 10 = 20

    综合实践案例

    1. 判断是否为2的幂

    • 一个数是否为2的幂数,其二进制表示中只有一个1。可以通过右移和或运算来判断。
      if (num >> 1) & num) {    // 不是2的幂} else {    // 是2的幂}

    2. 左右移操作

    • 左移:将数值扩大(左移n位等于乘以2^n)。
    • 右移:将数值缩小(右移n位等于除以2^n,向下取整)。
    上一篇:C#序列化与反序列化
    下一篇:C#的两种类据类型:值类型和引用类型

    发表评论

    最新留言

    能坚持,总会有不一样的收获!
    [***.219.124.196]2025年05月13日 03时51分33秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章