c语言位运算是什么?

Python021

c语言位运算是什么?,第1张

运算:C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。

在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。

当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则就会显得十分重要。

运算符号:

比较特别的是,比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补0)位移。

例如,将11100011右移3比特,算术右移后成为11111100,逻辑右移则为00011100。因算术比特右移较适于处理带负号整数,所以几乎所有的编译器都是算术比特右移。

运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符(=)和逗号运算符。

如果state&0x8000的值为0,则state&0x8000?1:0的结果就是0,否则就是1。

state&0x8000是按位进行与操作,与操作就是把两个数都转化为二进制数,然后对应位依次进行比较,如果对应位都为1,那么与操作结果就是1,如果没有对应位都为1的情况,那么与操作结果就是0。

0x8000是十六进制数,转换成二进制就是1000

0000

0000

0000,然后与state的值按位进行与操作。这里如果state的值也为0x8000,那么这个与操作结果就是1,否则与操作结果就是0.

C 语言中有以下位运算符:

&(按位与):将两个数的二进制每一位同时与(AND)起来,并将结果赋给左操作数。

|(按位或):将两个数的二进制每一位同时或(OR)起来,并将结果赋给左操作数。

^(按位异或):将两个数的二进制每一位同时异或(XOR)起来,并将结果赋给左操作数。

<<(左移):将左操作数的二进制数向左移动右操作数指定的位数,并将结果赋给左操作数。

>>(右移):将左操作数的二进制数向右移动右操作数指定的位数,并将结果赋给左操作数。

~(按位取反):将左操作数的二进制数按位取反(即 1 变为 0,0 变为 1),并将结果赋给左操作数。

希望这些可以帮助到你。