当前位置:首页 » 编程语言 » C语言位运算按位与

C语言位运算按位与

发布时间: 2023-04-08 11:22:46

① C语言的按位与、或、非、异或都什么意思。有什么用

这些是位操作运算符:参与运算的量,按二进制位进行运算。

在计算机中,数据都是以二进制数形式存放的,位运算就是指对存储单元中二进制位的运算。C语言提供6种位运算符。

包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。

位运算符 & |~<< >> ∧ 按优先级从高到低排列的顺序是:

位运算符中求反运算“~“优先级最高,而左移和右移相同,居于第二,接下来的顺序是按位与 “&“、按位异或 “∧“和按位或 “|“。顺序为~ << >> & ∧ | 。

(1)C语言位运算按位与扩展阅读:

例:设二进制数a是00101101 ,若通过异或运算a∧b 使a的高4位取反,低4位不变,则二进制数b是。

解析:异或运算常用来使特定位翻转,只要使需翻转的位与1进行异或操作就可以了,因为原数中值为1的位与1进行异或运算得0 ,原数中值为0的位与1进行异或运算结果得1。而与0进行异或的位将保持原值。异或运算还可用来交换两个值,不用临时变量。

如 int a=3 , b=4;,想将a与b的值互换,可用如下语句实现:
a=a∧b;

b=b∧a;

a=a∧b;

所以本题的答案为: 11110000 。

② C语言按位与怎么运算

计算两个数x,y相与的结果。
代码写作x&y
先将x与y分别写成二进制bit形式~~
例如计算10&30
10二进制为1010
30为11110
然后从低位开始,每个bit分别作与运算~~
其中bit的与运算,除了1&1=1外,其余组合结果均为0
故10&30=01010,即1010。。。

③ 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语言 字符串 按位与

// 编写的以高位相与的函数:

char*str;
voidstringv(char*str1,char*str2)
{
inti;
for(i=0;str1[i]!=''&&str[i]!='';i++)
str[i]=(str1[i]-0x30)&(str2[i]-0x30)+0x30;
str[i]='';
}

⑤ C语言的按位与、或、非、异或都什么意思。有什么用

位运算符有:&(按位与)、|(按位或)、^(按位异或)、~
(按位取反)。
优先级从高到低,依次为~、&、^、|
按位与运算有两种典型用法,一是取一个位串信息的某几位,如以下代码截取x的最低7位:x
&
0177。二是让某变量保留某几位,其余位置0,如以下代码让x只保留最低6位:x
=
x
&
077。
按位或运算的典型用法是将一个位串信息的某几位置为1。如将要获得最右4位为1,其他位与变量j原来其他位保持相同,可用逻辑或运算017|j;
按位异或运算的典型用法是求一个位串信息的某几位信息的反。如欲求整型变量j的最右4位信息的反,用逻辑异或运算017^j,就能求得j最右4位的信息的反,即原来为1的位,结果是0,原来为0的位,结果是1。
交换两个值,不用临时变量,假如a=3,b=4。想将a和b的值互换,可以用以下赋值语句实现:
a=a^b;
b=b^a;
a=a^b;
取反运算常用来生成与系统实现无关的常数。如要将变量x最低6位置成0,其余位不变,可用代码x
=
x
&
~077实现。

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

位运算符就是直接对整数在内存中的二进制位进行操作运算。比如,&&运算本来是一个逻辑运算符,但整数与整数之间可以用&进行运算。举个例子,6的二进制是110,11的二进制是1011,那么6 & 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。
C语言提供了六种按位运算符:& 按位与| 按位或^ 按位异或~ 取反<< 左移>> 右移

也就是与上0相当于把那位数清0,与上1相当于把那位保留。

⑦ 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语言中位运算按位与&结果怎么算

先把数字转换成二进制的,然后从低位向高位一一对应,再就是运算了,相当于数学里的真假与并,即1&1=1,1&0=0&1=0&0=0

⑨ 求助!什么是按位或,什么是按位异或,什么是按位与

1、按位或:如果两个相应的二进制位有一个为1,则该结果为1,否则为0。

2、按位异或(^):如果两个相应的二进制位值不同则为1,否则为0。

3、按位与(&):如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。按位的各种运算,结合图形看起来是不是还挺简单,不过这些都是正数的操作,负数还涉及到补码。

(9)C语言位运算按位与扩展阅读:

注意事项:

1、如果两个不同长度的数据进行位运算陵山时,尺键中系统会将二者按右端对齐,然后进行位运算。

2、以与运算为例说明如下:在C语言中long型占4个字节,int型占2个字节,如果一个long型数据与一个int型数据进行与运算,右端对齐后,左边不足的位依下面三种情况补足:

如果整型数据为正数,左边补16个0。

如果整型数据为负数,左边补16个1。

如果整形数据为无符号数,左边也补16个0。

参考资亮迟料来源:网络-按位或

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

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

分析如下:

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

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

(10)C语言位运算按位与扩展阅读

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

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

热点内容
android文本框居中 发布:2024-11-02 08:21:55 浏览:439
撕裂者哪个配置好 发布:2024-11-02 07:58:49 浏览:990
c编写的程序经过编译 发布:2024-11-02 07:41:18 浏览:941
mc服务器灵魂绑定如何出售 发布:2024-11-02 07:39:36 浏览:583
cf服务器不同如何一起玩游戏 发布:2024-11-02 07:38:24 浏览:945
手机压缩游戏 发布:2024-11-02 07:27:03 浏览:451
c语言的四书五经 发布:2024-11-02 07:21:42 浏览:742
vbaexcel数据库 发布:2024-11-02 07:16:09 浏览:11
java线程的sleep 发布:2024-11-02 07:15:18 浏览:845
手机缓存清理器 发布:2024-11-02 07:07:03 浏览:312