C语言中的位运算在编程中有什么意义啊!

我怎么感觉用不上呢?

特定情况下 计算方便,速度快
比如网络地址的计算,

IP1: 192.168.0.11
IP2: 192.168.0.51
mask: 255.255.255.0

数据分别用了4个字节来表示,当你想计算子网地址的时候就用 “MASK 逻辑或 IP” 运算, 得出 IP1 和 IP2 属于同一个子网,
当你想算这两个地址自身的时候,就用 逻辑与 运算,
如果用算数方法 速度慢 逻辑复杂
而且在单片机的情况下,有的复杂算数指令不一定支持的很好,但是位运算,就是基本逻辑运算,是99.9999% 的芯片都支持的
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-16
贴近硬件的编程时用的多,比如说单片机之类。
打个比方,如果你要用程序控制几个灯泡的亮与灭,可以使用位运算,1亮0灭。

10101010=亮灭亮灭亮灭亮灭。想让最后一个灯亮,那用位运算将该位--》置1(就是和1做“或运算”),就变成了10101011亮灭亮灭亮灭亮亮。
我只是形象的比喻了一下,一般没这么简单的。
第2个回答  2021-10-21
C语言中的位运算在编程中有什么意义啊!
C语言,哪有什么“位运算”啊!
C语言的运算,都是一个 char 或 int 的。
所谓的“位运算符”,都是对“字节、字、双字”操作的。
C语言,根本就没有针对一个 bit 的运算。
去看看 C51 吧,51 单片机中,才有“位操作”的功能。
第3个回答  2019-06-03
一、位运算符c语言提供了六种位运算符:
&按位与
|按位或
^按位异或
~取反
<<左移
>>右移
1.按位与运算按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下:00001001(9的二进制补码)&00000101(5的二进制补码)00000001(1的二进制补码)可见9&5=1。
按位与运算通常用来对某些位清0或保留某些位。例如把a的高八位清0,保留低八位,可作a&255运算(255的二进制数为0000000011111111)。
main(){
inta=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(){
inta=9,b=5,c;
c=a|b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
3.按位异或运算按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下:00001001^0000010100001100(十进制为12)
main(){
inta=9;
a=a^15;
printf("a=%d\n",a);
}
4.求反运算求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。例如~9的运算为:~(0000000000001001)结果为:1111111111110110
5.左移运算左移运算符“<<”是双目运算符。其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,
高位丢弃,低位补0。例如:a<<4指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。6.右移运算右移运算符“>>”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
例如:设a=15,a>>2表示把000001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。turboc和很多系统规定为补1。
main(){
unsigneda,b;
printf("inputanumber:");
scanf("%d",&a);
b=a>>5;
b=b&15;
printf("a=%d\tb=%d\n",a,b);
}
请再看一例!
main(){
chara='a',b='b';
intp,c,d;
p=a;
p=(p<<8)|b;
d=p&0xff;
c=(p&0xff00)>>8;
printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);
}
第4个回答  2008-12-15
当你用到了就知道是做什么的了。
现在不好说!

c语言位运算
C语言提供了位运算符来进行位运算操作,包括位移运算符、位逻辑运算符、取反运算符。这些运算符用于对二进制位进行操作。位运算符概述 C语言中的位运算符用于操作二进制位。这些运算符直接对整数的二进制位进行操作,是低级语言操作的重要组成部分。它们对于优化程序性能、实现特定功能非常关键。具体的位运...

C语言位运算
C语言中的位运算符是编程中的重要工具,包括按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)和右移(>>)。这些运算符允许我们对二进制位进行精细的操作,以实现高效的编码和逻辑处理。以下是这些运算符的具体应用:1. 按位与(&):这个运算符使两个数对应位只有在同时为1时结果才...

0基础学习C语言第三章:位运算
位运算在编程中有着广泛的应用,比如交换两个数、判断数字是否为2的幂次、求一个整数中0的个数、二进制快速求幂、判断奇偶数、求绝对值、对2的幂次取模等。掌握这些基本原理和应用,可以显著提升编程效率和解决问题的能力。位运算知识的深入理解与掌握,需要不断实践和总结经验。希望本文提供的知识点能...

C语言-自运算、位运算、取反运算
在C语言中,自运算、位运算和取反运算对于理解计算机底层逻辑至关重要。下面将分别介绍这些运算。首先,自运算包括自加运算和自减运算。自加运算有前缀和后缀两种形式,前缀运算符`++`在执行时先将变量值加一,然后返回这个值;后缀运算符`i++`则先返回变量当前值,然后加一。同样,自减运算也分为前缀...

C语言——位运算
本文将介绍C语言中的位运算,它允许程序员直接操作二进制位。二进制位,或“位”,仅包含0或1。在计算机中,数据以二进制形式表示,执行的指令亦是如此。计算机内部的数据以补码形式存储。这意味着,对于数字的二进制表示,最左侧的位(符号位)指示数字是正还是负。位运算包括:取反运算、左移运算、...

C语言——位运算
C语言中,位运算是一种独特且强大的功能,它直接作用于二进制位级,对数据进行操作。位运算符包括按位取反(~)、左移(<>)、按位与(&)、按位或(|)和按位异或(^)。以下是这些运算符的简介和示例:1. 按位取反(~):单目运算符,将运算数所有位取反,如无符号字符a=18,~a的结果...

C语言位运算符:与、或、异或、取反、左移和右移!
在C语言的世界里,位操作符犹如二进制运算的瑞士军刀,它们包括按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<>),在处理二进制数据时展现出了强大的威力。<\/ 按位与(&):<\/ 这个运算符如同一个精密的清零工具,通过与操作可以清零低字节或保留特定位。例如,60与17的按位与运算...

C语言位运算符
在C语言的世界里,位操作符是程序员手中不可或缺的工具,它们犹如二进制代码中的魔术师,对整型数据(char, short, int, long)的底层位进行精细操控。这里有六位小能手,它们分别是:1. 按位与(&): 仿佛是两位二进制数的亲密对话,只有当两个对应位都是1时,结果才会亮起1的灯。它在清零和取...

c语言中位与是什么意思
c语言中的按位与运算是一种基本的位运算,它将两个数的每一位进行比较,只有对应的两个二进位均为1时,结果位才为1,否则为0。它通过"&"运算符来实现。例如,数字9和5的按位与运算可以表示为9&5。具体计算过程如下:首先,将9和5转换为二进制表示:9为00001001,5为00000101。然后进行按位与...

c语言中位与是什么意思
在c语言中,位与是一种按位运算符,它用“&”表示。它的作用是将两个操作数的二进制按位对应比较,并生成一个新的二进制值。具体来说,如果两个二进制数的相应位都是1,则新二进制值的相应位也是1,否则为0。因此,在位与运算中,只有当两个操作数的相应位都是1时,结果才是1。位与运算在c...

相似回答