c语言位运算是什么意思 c语言中的位操作以及位运算符

c语言的魅力之一在于,可以使用c语言对变量中的个别位进行操作。在很多场合我们都需要这样的操作,如:许多压缩和加密操作都需要对单独的位进行操作;控制硬件设备时,需要向设备发送一两个字节,其中的每一位都有特定的意义。

在研究c语言操作位能力之前,我们先来了解一些二进制计数法和其他基数的一些知识。

c语言位运算是什么意思 c语言中的位操作以及位运算符(1)

十进制、十六进制和二进制等价数

1.二进制的1和0可以用于表示计算机内存和寄存器中位的打开和关闭,因此计算机硬件与二进制熟悉系统紧密相连,这也是c语言程序能与硬件设备和操作系统相连接的关键。

正如每个二进制数字表示一位一样,每个八进制数字表示三位,每个十六进制数字表示四位,从而会让我们在二进制、八进制以及十六进制之间转换变得相对简单,如上图所示。

在通常的说,我们平时所使用的文件或者其他数据,都可以以二进制形式打开,常用工具为Uedit,然后你会发现,数据其实都是这样的:

一个图片的部分二进制数据

2.简单了解的二进制,我们现在来谈谈位运算符。位运算符含义简单说就是因为这些运算符单独操作一个值(或变量)中的每一位。

  • 位反运算符(~):将操作数中的每一位取反,将1转换为0或将0转换为1;

  • 位与运算符(&):如果两个操作数中的某位都为1,那么结果值便为1,否则,改为便是0;

  • 位或运算符( | ):如果两个操作数的某位中某一位为1,那么结果该位就为1;当两位都是0的时候,该位才是0;

  • 位异或运算符(^):仅在两个操作数的对应位中只有一位设为1的时候,结果为才为1.

我们简单举几个例子说明一下:

c语言位运算是什么意思 c语言中的位操作以及位运算符(2)

3.除了上述常用的位运算符,还提供了左移(<<)和右移(>>)运算符。通过将一个位组合中的所有位向左或者向右移动指定数量的位形成新值。对于左移运算符,空出的位设为0,对于右移运算符,如果是无符号类型,则空出的位为0,对于有符号的值,正数空出来的值填0,负数则填1.

c语言位运算是什么意思 c语言中的位操作以及位运算符(3)

对于位运算符是不是加深了理解呢,如果有,就最好了。

每天进步一点点,每天消化一点点,如果你有更好的想法,欢迎一起交流。如果觉得文章对你有所帮助,点个赞呗。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页