c语言位运算

按位与 | 按位或 ^

按位异或 ~ 取反 <<

左移 >> 右移<<

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

2. 按位或运算。按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。 例如:9|5可写算式如下: 00001001|00000101 00001101 (十进制为13)可见9|5=13 main(){ int a=9,b=5,c; c=a|b; printf("a=%d/nb=%d/nc=%d/n",a,b,c); }

3. 按位异或运算。按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下: 00001001^00000101 00001100 (十进制为12) main(){ int a=9; a=a^15; printf("a=%d/n",a); }。

5. 左移运算。左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数, 高位丢弃,低位补0。例如: a<<4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

❷ c语言的按位运算符怎么操作!

楼主你好
&在c语言中是按位与运算
凡是位运算
应该先将对应的数转换为二进制
然后专再继续运算
首先楼主注意属0177是以0开头的
说明是八进制数
一个八进制数对应三个二进制位
八进制数1对应:
001
八进制数7对应:
111
因此:
0177对应的二进制数就是:
001
111
111
再则
这里除了底7位是1外
其余的都是0
另外按位与运算&就是只要有0
那么必为0
因此这里就是将n中除7个低二进制位外的其他各位均置为0
希望能帮助你哈

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

位运算是在二进制层面上进行的运算
位或就是在两个二进制上进行按版位的或运算
像普通的逻辑权运算一样 两个里有一个为真就返回真(逻辑真 就是1 逻辑假就是0)
比如两个十进制数 5 和 3 进行位或运算
把他们转换为二进制
5的二进制是 0101
3的二进制是 0011
他们按位或的结果是0111 转换到十进制就是0+4+2+1 是7

❹ C语言中的按位运算符和逻辑运算符

&&是逻辑与,计算机的逻辑无非两种,0和非0,7和8都是非0,那么7&&8就是非0,也就是真了。
&是位操作,即按两个操作数的二进制每一位进行与运算
7的二进制:00000111
8的二进制:00001000
与运算后为:00000000,结果就是假了

❺ 关于c语言中的按位或运算

#include "stdio.h"
void main()
{
unsigned int sum=0x0f,k=0x100;
printf("%d&%d=%d,%d\n",sum,k,sum&k,sizeof(sum));
}
输出结果:
15&256=0,4

#include "stdio.h"
void main()
{
unsigned char sum=0x0f,k=0x100;
printf("%d&%d=%d,%d\n",sum,k,sum&k,sizeof(sum));
}
输出结果:
15&0=0,1
Press any key to continue

我用VC++编译的,,结果差别在与k值为256超出了char的范围了

补充:结果为0

❻ C语言的逻辑运算和按位运算怎么区分

1、作用的不来同

&&、||是逻辑源运算符,用于从左到右求表达式的真值。假设x=1;y=2;那么x&&y=1;x||y=1。

&、|是位运算符,是对x,y进行位运算,x,y取值如上,那么有x&y=0;(x的二进制表示为00,y的二进制表示为10)。

2、判断这个表达式的真或假的不同

&和|既是逻辑运算符也是位运算符,而&&和||只是逻辑运算符。

当&与&&同为逻辑运算符时,它们都用于连接两个Boolean类型的表达式,当&和&&的两端表达式同时为真时,表达式的结果为真,只要有一端为假,那么表达式结果为假。

例:3>5&3>2;3>5&&3>2;

当|和||的两端表达式同时为假时,表达式的结果为假,只要有一端为真,那么表达式结果为真。

3、计算方式不同

当使用&运算符:计算机在判断表达式的值的时候,先判断3>5的值为假,然后再判断3>2的结果为真,于是最后的结果是假&真为假;

但是当我们使用&&运算符的时候:计算机先判断3>5的值为假,此时表达式的结果一定为假,所以计算机就不再往下判断了,判定表达式结果为假。

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

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

分析如下:专

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

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

(7)c语言按位与运算扩展阅读

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

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

❽ c语言中按位与。。按位或什么意思

位运算抄符C语言提供了六种位袭运算符:

& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移

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

例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码)00000001 (1的二进制补码)可见9&5=1。

❾ C语言…按位与,按位或!

是按2进制代码的同位进行运算。例如1010和1101这2个2进制数:
按位与为:
1010
1101
=
1000对应为同为1时是1,否则为0.

按位或为:
1010
1101
=
1111只要同位的两个全为零时得零,否则为1