您的位置:

根据c语言中按位运算的定义,c语言中按位与的运算符为

本文目录一览:

C语言中按位与(&)运算符是什么意思

是将二进制数按照位的对应相与,得到一个新的二进制数。1与0为0;1与1为1;0与0为0。

分析如下:

就是二进制的每一位相与。

比如:1010 0011 0000 1111,结果为0000 0011。也就是与上0相当于把那位数清0,与上1相当于把那位保留。

扩展资料:

1、按位与运算符""是双目运算符。 其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。

例如:95可写算式如下: 00001001 (9的二进制补码)00000101 (5的二进制补码) 00000001 (1的二进制补码)可见95=1。 按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a255 运算 ( 255 的二进制数为11111111)。

参考资料:百度百科:位运算符

C语言问题,按位与、按位或、按位异或、按位取反,解释下。

先说一下布尔值的与、或、异或、反运算:

与运算,两者都为真计算结果为真,反之为假:

1 1 = 1,1 0 = 0,0 1 = 0,0 0 = 0;

或运算,至少其一都为真计算结果为真,反之为假:

1 | 1 = 1,1 | 0 = 1,0 | 1 = 1,0 | 0 = 0;

异或运算,两者不同为真,反之为假:

1 ^ 1 = 0,1 ^ 0 = 1,0 ^ 1 = 1,0 ^ 0 = 0;

取反运算,单目运算符:

~1 = 0,~0 = 1;

以上例子 1 代表真,0 代表假。

按位运算就是将二进制位的每一位进行如上计算。

如 2 | 5,转换为二进制(以 1 字节 8 位为例):

00000010 | 00000101,每个二进制位分别进行或运算后得:

00000111 即 7。虽然 7 = 5 + 2 但不代表 2 | 5 = 2 + 5。

如:2 | 6 = 6,5 | 6 = 7,2 | 4 | 5 | 6 | 7 = 7。

同理,按位与运算 2 5 的结果为 0:

00000010 00000101 = 00000000

按位与运算 2 6 的结果为 2(二进制 00000010):

00000010 00000110 = 00000010。

同样也能算出 2 ^ 6 的结果为 4(二进制 00000101):

00000010 ^ 00000110 = 00000100。

取反运算 ~00000110 = 11111001。

当然,对一个数字进行取反运算结果是多少,还与该类型是有符号还是无符号,占用的字节大小等有关。上面的例子只是以一个字节为例进行说明。

C语言中按位或,与,非是怎么用的,怎么运算?

位运算符

C提供了六种位运算运算符;这些运算符可能只允许整型操作数,即char、short、int和long,无论signed或者unsigned。

按位AND

|

按位OR

^

按位异或

左移

右移

~

求反(一元运算)

按位与操作通常用于掩去某些位,比如

n

=

n

0177;

使得n中除了低7位的各位为0。

按位或操作|用于打开某些位:

x

=

x

|

SET_ON;

使得x的某些SET_ON与相对的位变为1。

按位异或操作^使得当两个操作数的某位不一样时置该位为1,相同时置0。

应该区分位操作符、|与逻辑操作符、||,后者从左到右的评价一个真值。比如,如果x为1、y为2,那么x

y为0,而x

y为1。

移位运算符和将左侧的操作数左移或者右移右操作数给定的数目,右操作数必须非负。因此x

2将x的值向左移动两位,用0填充空位;这相当于乘4。右移一个无符号数会用0进行填充。右移一个带符号数在某些机器上会用符号位进行填充(“算数移位”)而在其他机器上会用0进行填充(“逻辑移位”)。

单目运算符~对一个整数求反;即将每一个1的位变为0,或者相反。比如

x

=

x

~077

将x的后六位置0。注意x

~077的值取决于字长,因此比如如果假设x是16位数那么就是x

0177700。这种简易型式并不会造成额外开销,因为~077是一个常数表达式,可以在编译阶段被计算。

作为一个使用位操作的实例,考虑函数getbits(x,p,n)。它返回以p位置开始的n位x值。我们假设0位在最右边,n和p是正数。例如,getbits(x,4,3)返回右面的4、3、2位。

/*

getbits:

返回从位置p开始的n位

*/

unsigned

getbits(unsigned

x,

int

p,

int

n)

{

return

(x

(p+1-n))

~(~0

n);

}

表达式x

(p+1-n)将需要的域移动到字的右侧。~0是全1;将其左移n为并在最右侧填入0;用~使得最右侧n个1成为掩码。

C语言中按位运算和按字节运算,怎么理解这个抽象意思?

举个例子吧,

按位运算,比如数字4,二进制是00000100,

位运算,左移1位,二进制变成了00001000,变成8了,这就是位运算。

字节运算,忘记了,百度下吧,很多的

C语言中“按位运算符”是什么意思?

位于好比34 3 其二进制为00000011 4其二进制为00000100 34= 0(二进制00000000)00=0,01=0,11=1

|位或 1|1=1,1|0=1,0|0=0

^位异或1^1=0,1^1=0,1^0=1,0^1=1

~按位反 好比3其二进制为00000011 反一下为11111100

左移如32 ,3 其二进制为00000011 向左移2个变为00000000 其十进制为0

右移 跟左移一样的原理

C语言中什么是按位或运算

位运算是在二进制层面上进行的运算

位或就是在两个二进制上进行按位的或运算

像普通的逻辑运算一样 两个里有一个为真就返回真(逻辑真 就是1 逻辑假就是0)

比如两个十进制数 5 和 3 进行位或运算

把他们转换为二进制

5的二进制是 0101

3的二进制是 0011

他们按位或的结果是0111 转换到十进制就是0+4+2+1 是7