什么是按位进行与运算

如题所述

位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作
运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。
C语言提供的位运算符列表:
运算符
含义
描述
&
按位与
如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
|
按位或
两个相应的二进制位中只要有一个为1,该位的结果值为1
^
按位异或
若参加运算的两个二进制位值相同则为0,否则为1
~
取反
~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0
<<
左移
用来将一个数的各二进制位全部左移N位,右补0
>>
右移
将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0
1、“按位与”运算符(&)
按位与是指:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,
则该位的结果值为1;否则为0。这里的1可以理解为逻辑中的true,0可以理解为逻辑中的false。按位与其
实与逻辑上“与”的运算规则一致。逻辑上的“与”,要求运算数全真,结果才为真。若,true,B=true,则A∩B=true
例如:3&5
3的二进制编码是11(2)。(为了区分十进制和其他进制,本文规定,凡是非十进制的数据均在数据后面加上括号,括号中注明其进制,二进制则标记为2)内存储存数据的基本单位是字节(Byte),一个字节由8个位(bit)所组成。位是用以描述电脑数据量的最小单位。二进制系统中,每个0或1就是一个位。将11(2)补足成一个字节,则是00000011(2)。5的二进制编码是101(2),将其补足成一个字节,则是00000101(2)按位与运算
00000011(2)&00000101(2)&00000001(2)由此可知3&5=1
c语言代码:
#include
<stdio.h>
main()
{
int
a=3;
int
b
=
5;
printf("%d",a&b);
}
按位与的用途:
(1)清零
若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合一下条件:
原来的数中为1的位,新数中相应位为0。然后使二者进行&运算,即可达到清零目的。
例:原数为43,即00101011(2),另找一个数,设它为148,即10010100(2),将两者按位与运算:
00101011(2)
&10010100(2)
00000000(2)
c语言源代码:
#include
<stdio.h>
main()
{
int
a=43;
int
b
=
148;
printf("%d",a&b);
}
(2)取一个数中某些指定位
若有一个整数a(2byte),想要取其中的低字节,只需要将a与8个1按位与即可。
a
00101100
10101100
b
00000000
11111111
c
00000000
10101100
(3)保留指定位:
与一个数进行“按位与”运算,此数在该位取1.
例如:有一数84,即01010100(2),想把其中从左边算起的第3,4,5,7,8位保留下来,运算如下:
01010100(2)
&00111011(2)
00010000(2)
即:a=84,b=59
c=a&b=16
c语言源代码:
#include
<stdio.h>
main()
{
int
a=84;
int
b
=
59;
printf("%d",a&b);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-03
有两种,一种是按位与,一种是按位或。
按位与:10H用二进制表式为10000,当和一个数x进行按位与,就会使x在第4次方(即倒数第5位)这个位置的数保持不变(即x在这个位置的数为1就是1,为0就是0),其它位都会为零。
按位或:当和一个数x进行按位或,就会使其它位都不变,只变x在第4次方(即倒数第5位)这个位置的数,使x在这个位置的数变为1。
第2个回答  2019-01-11
两者都是计算机中0,1比特序列的运算,简单的说:
(1)按位与运算,相当于且运算,两个比特序列对应位都为1,结果为1,否则均为0
(2)按位或运算,顾名思义,两个比特序列对应为都为0时,结果为0,否则均为1
第3个回答  2019-07-25
按位进行与运算符‘&’的功能是对参与运算的各对应的二进位相与,9&5:00001001&00000101=00000001.9&5=1
按位进行或运算符‘|’的功能是对参与运算的各对应的二进位相或,9|5:
00001001|00000101=00001101.9|5=13
自己把它抄下来慢慢看看
第4个回答  2019-07-22
&
按位与
|
按位或
^
按位异或
1.
按位与运算
按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1
,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下:
00001001
(9的二进制补码)&00000101
(5的二进制补码)
00000001
(1的二进制补码)可见9&5=1。
按位与运算通常用来对某些位清0或保留某些位。例如把a
的高八位清
0

保留低八位,
可作
a&255
运算
(
255
的二进制数为0000000011111111)。
main(){
int
a=9,b=5,c;
c=a&b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
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按位表示就是00000101。两者相与时,都是1时结果为1,不全是1时结果为0;两者相或时,都是0时结果为0,不全是0时结果为1。举例:十进制的6和10按位与、或分别是,00000110和00001010,按照每一位进行与、或,结果分别是00000010和00001110,即2和14。

求助!什么是按位或,什么是按位异或,什么是按位与?
1、按位或:如果两个相应的二进制位有一个为1,则该结果为1,否则为0。2、按位异或(^):如果两个相应的二进制位值不同则为1,否则为0。3、按位与(&):如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。按位的各种运算,结合图形看起来是不是还挺简单,不过这些都是正数的操作...

按位与是什么意思
按位与(&)是一种二进制运算符,其作用是对两个二进制数的每一位进行比较,如果两个数的相应位都为1,则结果为1,否则结果为0。当我们需要对一个数字执行类似“筛选奇数”的操作时,通常会使用按位与。按位与经常被用来从一个数字中提取某些位的值。例如,如果我们想要从一个8位二进制数中提取...

求助!什位异或,什么是按位与?
位运算在计算机科学中是非常基础且重要的概念,主要包括按位或(|)、按位异或(^)和按位与(&)。以下是它们的简单解释:1. 按位或(|):这种运算符比较两个二进制位,如果至少有一个为1,结果位就为1,否则为0。这种操作直观地反映了“或”的逻辑,即只要有一个条件满足,结果即为真。2. 按...

C语言中移位运算
按位与是指:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。这里的1可以理解为逻辑中的true,0可以理解为逻辑中的false。按位与其实与逻辑上“与”的运算规则一致。逻辑上的“与”,要求运算数全真,结果才为真。若,A=true,B=true...

求助!什么是按位或,什么是按位异或,什么是按位与?
按位与:是一种二进制运算,表示两个位都为1时,结果才为1。详细解释:按位或是二进制运算的一种。在进行按位或运算时,如果两个相应的二进制数中至少有一个为1,那么结果的这一位就为1。换句话说,只有当相应的两个位都为0时,结果位才会是0。这种运算在计算机科学中有广泛的应用,例如在设置...

你好,刚刚看了你对按位与操作的回答,大概懂了些,但是我对这道题还是搞...
现在假设机器为8位(32位也是一样道理),进行按位与运算吧,-25的二进制为1001 1001 补码为:1110 0111 93的二进制为0101 1101 按位与是逐位二进制进行按位与运算,规则是两数同时为1时才为1,否则为0,计算结果如下:1110 0111 0101 1101 0100 0101 这便是结果,化为10进制为69 ...

位与运算定义是什么?
具体不知道怎么定义的 但是所谓位与,即为按位做与运算。就是每一位两个数字做与运算,因为在计算机世界里,只有0和1两个数字。于是有:1与1---等于1 0与1---等于0。

java中的 &是什么意思 如何使用 计算
与一个数进行&运算,此数在该位取1。例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为...

汇编语言里 的 或运算 与运算是什么意思
1、与运算 and指令:逻辑与指令,按位进行与运算。mov al, 01100011B and al, 00111011B 执行之后:al =00100011B 通过该指令可将操作对象的相应位设为0,其他位保持不变。2、或运算 or指令:逻辑或指令,按位进行或运算。mov al, 01100011B or al, 00111011B 执行之后:al =01111011B 通过...

相似回答