C语言什么是位运算?位运算符包括哪些?

发布于:2024-05-17 ⋅ 阅读:(122) ⋅ 点赞:(0)

一、问题

        数学中的加、减、乘、除四则运算,恐怕谁都不会陌⽣。那么在C语⾔中,什么是位运算?位运算符包括哪些呢?

二、解答

1. 位运算

        所谓位运算,就是对⼆进制位进⾏运算。位运算不是以字节为单位进⾏的,⽽是对内存中存储数据的每个⼆进制位进⾏的运算。 每个⼆进制位都是由 0 和 1 组成的,通常最右端称为低位,左端称为⾼位。正确、熟练地进⾏位运算,可以帮助编写复杂的程序,节省内存空间。 在运算的过程中,必不可少的是运算操作符,如加、减、乘、除等。那么位运算的操作符包括哪些呢?

2. 位运算符

        C语⾔提供了6种位运算符,分别是按位与(&)、按位或( | )、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)。除了按位取反运算符为单⽬运算符外,其余都是双⽬运算符。 *

(1)按位与(&)

        将两个参与运算的数据表⽰为⼆进制位的形式,按⼆进制位进⾏“ 与 ”运算。即如果两个相应的⼆进制位都是“ 1 ”,则运算结果为“ 1 ”否则都为“ 0 ”。例如 6&9,即 6 按位与 9 ,计算过程可以表示如下。

注意:

    如果参与&运算的是负数,则以补码形式将此数表⽰为⼆进制数,然后按位进⾏“与”运算。

(2)按位或( | )

        按位或也是对两个⼆进制位进⾏运算,如果两个相应的⼆进制位有⼀个是“1”,结果 就是“1”,否则结果为“0”。例如 6 | 9,计算过程可以表示如下。

(3)按位异或(^)

        异或运算的含义是参与运算的两个⼆进制位同号,则结果为“ 0 ”,不同则结果为“ 1 ”。 例如6^7,计算过程可以表示如下。

(4)按位取反(~)

        按位取反是位运算符中唯⼀⼀个单⽬运算符,⽤来对⼀个⼆进制数按位取反,即“ 0 ” 变“ 1 ”,“ 1 ”变“ 0 ”。例如~9,计算过程可以表示如下。

~00001001 得到 11110110

(5)左移(<<)

        “ << ”⽤来将⼀个数的各⼆进制位左移若⼲位。例如 10<<3,将10 表示成⼆进制数为00001010,左移 3 位,右补 0 ,得到 01010000,转换为⼗进制数为 80。

(6)右移(>>)

        “ >> ”⽤来将⼀个数的各⼆进制位右移若⼲位。移到右端的低位被舍弃;对⽆符号数,⾼位补0。例如 33>>2 ,将33 表⽰成⼆进制数为 00100001,右移 2 位得到 00001000,转换成⼗进制数为8。

三、总结

        对于位运算,上⾯只是简单回答了什么是位运算,以及位运算的⼏种运算形式。其实, 在位运算中还存在⼀些较为复杂的运算,如负数的位运算,以及不同长度的两个数据之间的位运算等。⽤到时要注意补位。

 


网站公告

今日签到

点亮在社区的每一天
去签到