C++位运算

C++ 中的位运算 到底是干什么的? 好像从来没用过 ,我知道肯定又出但是到底有什么用的,有什么好处?谢谢!

第1个回答  2010-05-01
就是对一个N位二进制数的某一位进行操作
第2个回答  2010-05-01
C的我就知道 可以用在嵌入式方面 例如 单片机 ARM芯片..
C++... 在嵌入式方面也有应用 不过在底层代码 如驱动程序代码和汇编嵌套的几率比较少..

楼下有道理 位运算很快 因为位运算就是二进制的计算 计算机就是二进制的鬼阿
第3个回答  2010-05-01
比如说
快速判断n是不是2的幂次
n && (n&(n-1))
前面是判断n不为0,后面的&就是按位与,判断n是2的次方

简单的看就是把一个数对每一位操作,有什么用要看你怎么用。

再比如说计算a*16,b/8,乘法除法很慢的,但是移位运算很快
a<<4, b>>3就可以了
lz也可以去看一些快速乘法的算法

还是那句话,工具是工具,怎么用看程序员了
第4个回答  2010-05-01
位运算是对数据的每一个二进制位做逻辑的 与、或、非 等运算,在计算机中,数据是以二进制的形式存储的,如常用的char型的数据是8个二进制位组成,short型是16个二进制位组成。位运算就是对每一个数据位做运算。
位运算的优点是计算速度快,一般是单周期指令,就是一个时钟周期就完成的事情。而加减就比较麻烦了,这个在PC机上的差别不太明显,但在嵌入式的CPU中就比较大,如对一个数a除以8,就可以将a右移3位,a>>3,代码效率高。
位运算用的最多的应该是在嵌入式领域中,在嵌入式的CPU中的每一个寄存器的每一位都有特定的含义,经常需要对某一位进行操作,而又不希望影响别的位,如让AVR单片机的PA口的第2位变成低电平,其它的不变,就可以写成:PORTA = PORTA & 0x02 .如果不用位运算,就不好实现了。本回答被提问者采纳

C++位运算,位取反,位左移,位右移
在C++编程中,位运算是一种操作数据中每个比特位的运算方式。这些操作包括位取反、位左移和位右移等。这些运算在处理低级硬件和内存管理时特别有用,具有高效性能的特点。让我们通过一个实例深入理解这些操作的实现和作用。首先,初始化无符号字符变量 bits 为八进制形式 0227,即十进制形式是 151。位...

C++中的位运算
与运算(&):两个数据按位进行逻辑与操作。只有当两个位都是1时,结果才会是1。例如,3与5进行与运算,其二进制表示为00000011与00000101,结果为00000001,即1。负数以补码形式参与与运算。用途:清零、取特定位、判断奇偶。如判断一个数是奇数还是偶数,可以使用与运算与1进行操作。或运算(|):两...

详解C++按位与、或、异或运算
C++的位运算符按位与(&), 按位或(|), 和异或(^)在编程中有着重要的应用。它们都是针对二进制位进行操作,对于负数,需使用补码形式参与运算。首先,按位与(&)的规则是:0与0结果为0,0与1结果为0,1与0结果为0,1与1结果为1。它可以用来清零、取特定位或判断奇偶性。例如,通过与一个全...

c++中用位运算(按位异或)交换浮点型变量值的原理是什么?
在C++中,使用位运算进行浮点型变量值交换的原理涉及到异或运算。异或操作符 (^) 是在位级别执行的,它比较两个操作数的每一位,如果位相同则结果为0,不同则结果为1。具体应用到浮点型变量交换中,需要通过异或操作来实现数据的交换。然而,需要注意的是,直接使用异或进行交换存在一定的限制和潜在的错...

c++中,符号=和&=是什么意思?
c++中符号=和&=是用于赋值操作的位运算符。首先,我们来了解一下右移运算符(>>)。例如,定义一个整型变量i=2,其二进制形式为10。若执行i>>=1操作,则i的值会变为1,即二进制表示为1。右移运算符将操作数的位向右移动指定的位数。在这个例子中,i的二进制形式向右移动了一位,所以最右边的...

【C++新手教程】C++ 运算符
C++中的运算符是编程中的关键符号,用于指示编译器执行特定数学或逻辑操作。本文将详细解释算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符以及其他重要运算符,以帮助新手更好地理解和使用。1. 算术运算符C++支持的算术运算符包括:加、减、乘、除等。例如,变量A(10)和B(20)的运算实例,...

c++的基本进制和它的运算有没有什么简便方法
c++代码中的数据可以用10进制,8进制,16进制,运行时是进行2进制运算。简便方法当然有,多是位运算,位运算效率比一般的加减乘除高很多,以下是一些位运算技巧:将最右侧0位改为1位: x | (x+1)x &= (x-1); \/\/将x的最右边的1位变成0 二进制补码运算公式:-x = ~x + 1 = ~(x-1)...

C++位运算
位运算用的最多的应该是在嵌入式领域中,在嵌入式的CPU中的每一个寄存器的每一位都有特定的含义,经常需要对某一位进行操作,而又不希望影响别的位,如让AVR单片机的PA口的第2位变成低电平,其它的不变,就可以写成:PORTA = PORTA & 0x02 .如果不用位运算,就不好实现了。希望对你能有所帮助。

c++中的位运算计算问题
然后按位取反,得:1111111111111111111111111111110,最后再加个1,就是0xFFFFFFFF,a|b-c,这要考虑到运算符的优先级问题,乘除求余的优先级大于加法减法,加法减法大于与运算,与运算大于异或运算,异或运算大于或运算,现在再来看你的问题,a|b-c:先做减法b-c,得-1,然后再与1做或运算,得到-1...

c++中的异或是什么?
C++中的异或是一种位运算操作符,用符号"^"表示。异或运算是一种二进制运算,它对每一位执行“异”则“或”的操作。具体来说,如果两个相应的二进制位相同,则结果为0,否则为1。这种运算在C++中常被用于一些低级的位操作,如加密、数据校验或者某些特定的算法中。举个例子,...

相似回答