
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,向下取整)。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年05月13日 03时51分33秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java基础学习总结(57)——Jrebel插件热部署
2023-01-28
Java基础学习总结(58)——JAVA堆、栈详解
2023-01-28
Java基础学习总结(59)——30 个java编程技巧
2023-01-28
Java类实现一个类的障眼法
2023-01-28
Java基础学习总结(5)——多态
2023-01-28
Java基础学习总结(60)——Java常用的八种排序算法
2023-01-28
Java基础学习总结(63)——Java集合总结
2023-01-28
Java基础学习总结(64)——Java内存管理
2023-01-28
Java基础学习总结(66)——配置管理库typesafe.config教程
2023-01-28
Java基础学习总结(67)——Java接口API中使用数组的缺陷
2023-01-28
Java基础学习总结(68)——有关Java线程方面的面试题
2023-01-28
Java基础学习总结(70)——开发Java项目常用的工具汇总
2023-01-28
Java基础学习总结(73)——Java最新面试题汇总
2023-01-28
Java基础学习总结(75)——Java反射机制及应用场景
2023-01-28
Java基础学习总结(76)——Java异常深入学习研究
2023-01-28
java酒店管理(ssm)
2023-01-28
Java基础学习总结(80)——Java性能优化详解
2023-01-28
Kubernetes 笔记 08 Deployment 副本管理 重新招一个员工来填坑
2023-01-29
Java基础知识陷阱系列
2023-01-29