C++位运算符详解(异或运算符和移位运算符)_C 语言

什么是位运算

位运算符按二进制进行运算,这些运算符只能用于整数类型的操作。如:char,short,int,long

通过位运算符来获取高位值和低位值

int a=0x1234;

int high,low;

high = (a>>8) &0x00ff;

low = a & 0x00ff;

左移运算符和右移运算符(<<和>>)

左移是将一个二进制数,移动若干位,右边空出的位置用0来填补,高位左移溢出应该舍弃该高位。

如:inta = 8, a = 00001000;

a<<2则a =00100000;所以a的值为a*2^2 = 32;

左移过程中,如果这个数被溢出舍弃的高位不包含1,则移完后的值就是这个值*2^移动的位数.

右移是将一个二进制数,右移若干位,左边空出的位置用0来填补(如果是无符号类型,如果是有符号类型则根据操作系统的规定来补全。有些操作系统是用符号位来填补,有些操作系统默认是按照0来填补)。

异或(^)

两个参加二进制运算的值相同为0,否则为1

1.  与0异或,保留原来的值

2.  交换两个值,不用临时变量

a=3,b=4

a= a^b;

b= b^a;(b=b^a^b)

a= a^b;(a^b^a^b^b)

时间: 2024-09-20 00:24:30

C++位运算符详解(异或运算符和移位运算符)_C 语言的相关文章

详解C++编程中的虚函数_C 语言

我们知道,在同一类中是不能定义两个名字相同.参数个数和类型都相同的函数的,否则就是"重复定义".但是在类的继承层次结构中,在不同的层次中可以出现名字相同.参数个数和类型都相同而功能不同的函数. 人们提出这样的设想,能否用同一个调用形式,既能调用派生类又能调用基类的同名函数.在程序中不是通过不同的对象名去调用不同派生层次中的同名函数,而是通过指针调用它们.例如,用同一个语句"pt->display( );"可以调用不同派生层次中的display函数,只需在调用前

距离详解Linux下的UDP方式通讯_C 语言

UDP方式点对点通讯  #include <stdio.h> #include <string.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #include <errno.h> #include <stdlib.h> #include <arpa/inet.h> int main(int argc, char

详解C++中shared_ptr的使用教程_C 语言

shared_ptr是一种智能指针(smart pointer).shared_ptr的作用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象. 这便是所谓的引用计数(reference counting).一旦最后一个这样的指针被销毁,也就是一旦某个对象的引用计数变为0,这个对象会被自动删除.这在非环形数据结构中防止资源泄露很有帮助. auto_ptr由于它的破坏性复制语义,无法满足标准容器对元素的要求,因而不能放在标准容器中:如果我们希望当容器析构时能自动把它容纳的指针元素所

C语言位运算和sizeof运算符详解_C 语言

位运算和sizeof运算符       C语言中提供了一些运算符可以直接操作整数的位,称为位运算,因此位运算中的操作数都必须是整型的.位运算的效率是比较高的,而且位运算运用好的话会达到意想不到的效果.位运算主要有6种:与(&),或(|),取反(~),异或(^),左移(<<),右移(>>). 1.位运算中的类型转换       位运算都必须进行Integer Promotion.在进行运算之前,都必须将char型.short型的数据转换为int或者unsigned int型再

JavaScript知识点总结(四)之逻辑OR运算符详解_javascript技巧

在JavaScript中,逻辑OR运算符用||表示 var bTrue = true; var bFalse = false; var bResult = bTrue || bFalse; 下面的真值表描述了逻辑AND运算符的行为: 在JavaScript中,0,"",false,null,undefined,NaN均表示false, 可以用如下的代码证明: <script type="text/javascript"> var bFalse = fal

PHP读书笔记_运算符详解

什么是运算符 什么是运算符?运算符是告诉PHP做相关运算的标识符号.例如,你需要计算123乘以456等于多少,这时候就需要一个符号,告诉服务器,你需要做乘法运算. PHP中的运算符有哪些?PHP运算符一般分为算术运算符.赋值运算符.比较运算符.三元运算符.逻辑运算符.字符串连接运算符.错误控制运算符. PHP中的算术运算符 算术运算符主要是用于进行算术运算的,例如:加法运算.减法运算.乘法运算.除法运算.在PHP中的常用的算术运算符对应下表: PHP中的赋值运算符 PHP的赋值运算符有两种,分别

详解C++编程中的sizeof运算符与typeid运算符_C 语言

sizeof 运算符产生与 char 类型的大小有关的操作数大小. 语法 sizeof unary-expression sizeof ( type-name ) 备注 sizeof 运算符的结果为 size_t 类型,它是包含文件 STDDEF.H 中定义的整数类型.利用此运算符,你可以避免在程序中指定依赖于计算机的数据大小. sizeof 的操作数可以是下列项之一: 类型名称.若要将 sizeof 用于类型名称,则该名称必须用括号括起. 一个表达式.当用于表达式时,无论是否使用括号都可指定

详解PHP中的null合并运算符_php实例

null合并运算符是一个好东西,有了它我们就能很方便的获取一个参数,并能在其为空的情况下提供一个默认值.比如在js中可以用||来搞: function setSomething(a){ a = a || 'some-default-value'; // ... } 而在PHP中,可惜PHP的||总是返回true或false,无法这样来搞.  PHP7才正式加入了??这个运算符: // 获取user参数的值(如果为空,则用'nobody') $username = $_GET['user'] ??

php中的三元运算符详解

php教程中的三元运算符详解 三元运算符的功能与"if....else"流程语句一致,它在一行中书写,代码精练.执行效率高.在PHP程序中恰当地使用三元运算符能够让脚本更为简洁.高效.代码的语法如下: (expr1)?(expr2):(expr3);   解释:如果条件"expr1"成立,则执行语句"expr2",否则执行"expr3". 实现同样的功能,若使用条件流程语句,就需要书写多行代码:  if(expr1){ exp