C# 位操作符:理解位移
位运算符是 C# 的重要组成部分,它允许您操作整数的各个位。 这些运算符在底层编程、性能优化和使用标志方面非常有用。 在本文中,我们将以 Tim Corey 的视频 Binary in C# 为指导,深入了解位移:在 10 分钟或更短时间内使用位向左移位和位向右移位进行位移。
位移简介
蒂姆首先继续讲述他对 C# 中二进制的理解系列。 本课是该系列的第四课,主要介绍位移。 目标是了解向左或向右移动位数对数字的影响,以及我们如何在编程中使用这种技术。
Tim通过创建一个名为ConvertToBinary的方法来设置示例,该方法将整数转换为其二进制表示,并确保它以8位格式显示。 这样可以更直观地说明位移是如何工作的。
了解位向左移位
Tim引入了左移位的概念,使用左移运算符(<<)。 他解释说,左移2^n。
例如,他以数字 9 开头,二进制为
0000100100001001当他左移三位(9 << 3)时,结果是:
0100100001001000这个新的二进制值表示72。Tim强调,左移实际上是在右边添加三个零,将数字乘以2的三次方(即9 * 2^3 = 72)。
实际用例:设置单个位
Tim 解释说,虽然移动现有数字很有用,但更常见的做法是将数字 1 移动到特定位置。 例如:
1 << 31 << 3这样就把位移到了第四位,结果是:......:
0000100000001000这个二进制数等于 8。Tim 指出,在使用位掩码或标志时,这种技巧特别有用。
了解位向右移
接下来,Tim用右移运算符(>>)解释了右移位。 右移2^n并舍弃任何余数。
使用前面的示例,二进制中的数字9(9 >> 2)结果为:
0000001000000010这等于 2。蒂姆解释说,右移实质上是从右边移除比特,从而减小数字的值。
位移为什么有用
Tim 讨论了位移在编程中的价值。 一些关键用例包括
优化计算:位移可以取代乘法和除法,使运算速度更快。
设置和清除特定位:在基于标志的枚举中,位移可以有效地存储和操作布尔值。
- 使用硬件:许多低级硬件操作都依赖于位操作。
结论
Tim 最后强调,位移经常与其他操作结合使用。 了解如何有效地位移可以提高代码的效率和优化代码,尤其是在涉及标志、二进制计算和性能关键型应用程序的情况下。
根据 Tim Corey 的解释,我们探讨了位向左和位向右移动的工作原理、它们对数字的影响以及它们的常用位置。 如果您想获得直观深入的演练,Tim 的 视频是掌握 C# 中位运算的绝佳资源。

