返回介绍

2.3.4 位运算符

发布于 2025-04-11 22:32:52 字数 1246 浏览 0 评论 0 收藏 0

前面讲过,二进制码中最小的单位是位(bit),8 位构成 1 字节。但我们前面所讲的算术运算符、关系运算符和逻辑运算符都不能对位直接进行操作,如果想要对位进行相应的操作就需要用到位运算符,如表 2.12 所示。

表 2.12 位运算符

为了更好地理解位运算符,下面举例说明整数 23,其 8 位的二进制码为“0001 0111”。

23 << 1:进行按位左移 1 位的操作,则会把这 8 位都向左移动 1 位,原来的最高位 0 被移出抛弃,最低位补 0,最终得到“0010 1110”这样一个 8 位的二进制码,对应的整数值为 46,正好是 23 的 2 倍。

23>>1:进行按位右移 1 位的操作,则会把这 8 位都向右移动 1 位,原来的最低位 1 被移出抛弃,最高位补符号位 0,最终得到“0000 1011”这样一个 8 位的二进制码,对应的整数值为 11,正好是 23 被 2 整除的结果。

~23:对 8 位二进制码进行按位取反,得到结果“1110 1000”,最高位由 0 变成了 1,所以成了一个负数,对应的整数值为–24。

现在再来一个整数 50,其 8 位二进制码为“00110010”。

23 & 50:将两个整数的二进制码的每一位进行按位与的操作,即对应的两位都为 1 时,结果为 1,否则为 0,得到结果码为“0001 0010”,对应的整数值为 18。

23 | 50:将两个整数的二进制码的每一位进行按位或的操作,即对应的两位都为 0 时,结果为 0,否则为 1,得到结果码为“0011 0111”,对应的整数值为 55。

23 ^ 50:将两个整数的二进制码的每一位进行按位异或的操作,即对应的两位不同(一个为 1,一个为 0)时,结果为 1,两位相同(同为 1 或同为 0)时为 0,得到结果码为“0010 0101”,对应的整数值为 37。

这里的按位与运算符与逻辑与运算符、按位或运算符与逻辑或运算符、按位取反运算符与逻辑非运算符看起来是有些类似,但有着本质的不同:逻辑运算符都是对操作数进行运算的,而位运算符是对操作数的二进制位进行运算的,这一点要谨记。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。