(与运算)、|(或运算)、^(异或运算)的本质理解

按位与运算符(&)

参加运算的两个数据,按二进制位进行“与”运算。

运算规则:0&0=0;  0&1=0;   1&0=0;    1&1=1;

      即:两位同时为“1”,结果才为“1”,否则为0

例如:3&5  即 0000 0011& 0000 0101 = 00000001  因此,3&5的值得1。

 

另,负数按补码形式参加按位与运算。

“与运算”的特殊用途:

(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。

 

(2)取一个数中指定位

方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。

例:设X=10101110,

   取X的低4位,用 X & 0000 1111 = 00001110 即可得到;

   还可用来取X的2、4、6位。

 

按位或运算符(|)

参加运算的两个对象,按二进制位进行“或”运算。

运算规则:0|0=0;  0|1=1;  1|0=1;   1|1=1;

     即 :参加运算的两个对象只要有一个为1,其值为1。

例如:3|5 即 00000011 | 0000 0101 = 00000111  因此,3|5的值得7。 

 

另,负数按补码形式参加按位或运算。

“或运算”特殊作用:

(1)常用来对一个数据的某些位置1。

方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1。

例:将X=10100000的低4位置1 ,用X | 0000 1111 = 1010 1111即可得到。

 

异或运算符(^)

参加运算的两个数据,按二进制位进行“异或”运算。

运算规则:0^0=0;  0^1=1;  1^0=1;   1^1=0;

   即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。

 

“异或运算”的特殊作用:

(1)使特定位翻转找一个数,对应X要翻转的各位,该数的对应位为1,其余位为零,此数与X对应位异或即可。

例:X=10101110,使X低4位翻转,用X ^0000 1111 = 1010 0001即可得到。

 

(2)与0相异或,保留原值 ,X ^ 00000000 = 1010 1110。

从上面的例题可以清楚的看到这一点。

取反运算符(~)

参加运算的一个数据,按二进制位进行“取反”运算。

运算规则:~1=0;  ~0=1;

     即:对一个二进制数按位取反,即将0变1,1变0。

 

使一个数的最低位为零,可以表示为:a&~1。

~1的值为1111111111111110,再按“与”运算,最低位一定为0。因为“~”运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他运算符都高。

左移运算符(<<)

将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。

例:a = a<< 2将a的二进制位左移2位,右补0,

左移1位后a = a *2; 

若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。

右移运算符(>>)

将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

操作数每右移一位,相当于该数除以2。

例如:a = a>> 2 将a的二进制位右移2位,

左补0 or 补1得看被移数是正还是负。

 

 

>> 运算符把expression1 的所有位向右移 expression2指定的位数。expression1的符号位被用来填充右移后左边空出来的位。向右移出的位被丢弃。

例如,下面的代码被求值后,temp 的值是 -4:

  -14 (即二进制的 11110010)右移两位等于 -4(即二进制的 11111100)。

 var temp = -14 >> 2

 

 

  无符号右移运算符(>>>)

 

 

>>>运算符把 expression1 的各个位向右移expression2 指定的位数。右移后左边空出的位用零来填充。移出右边的位被丢弃。

例如:var temp = -14 >>>2

变量 temp的值 -14 (即二进制的 11111111 11111111 1111111111110010),向右移两位后等于 1073741820 (即二进制的 00111111 11111111 1111111111111100)。

复合赋值运算符

位运算符与赋值运算符结合,组成新的复合赋值运算符,它们是:

&=   例:a &=b       相当于a=a& b

|=   例:a |=b       相当于a=a |b

>>=  例:a >>=b      相当于a=a>> b

<<= 例:a<<=b      相当于a=a<< b

^=   例:a ^= b      相当于a=a^ b

运算规则:和前面讲的复合赋值运算符的运算规则相似。

不同长度的数据进行位运算

如果两个不同长度的数据进行位运算时,系统会将二者按右端对齐,然后进行位运算

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

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

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

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

如:long a=123;int b=1;计算a& b。

 

如:long a=123;int b=-1;计算a& b。

 

如:long a=123;unsigned intb=1;计算a & b。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css资源网站收集推荐

非原创&#xff0c;来源网络。感谢原作者奉献如此精彩文章。原文地址&#xff1a;http://www.jianbitou.com/post/20_websites-learn-master-css.html1. A List Apart CSS Topics A List Apart是一个CSS优秀文章的收集网站&#xff0c;从1999年开始收集文章&#xff0c;关注最佳…

《计算机算法设计与分析》题目汇总

Github源码地址&#xff1a; https://github.com/hlk-1135/Data-Structures-and-Algorithms 递归与分治&#xff1a; 电路布线问题有重复元素的排列问题集合划分问题半数集和半数单集循环日程赛矩阵连乘问题最长公共子序列问题排列的字典序问题字典序问题 动态规划&#xff1…

教你如何窃取网络信息

随着网络业的迅速发展&#xff0c;网络安全问题日趋行严重&#xff0c;******活动日益猖獗&#xff0c;******技术成为人们关注的焦点。在因特网上&#xff0c;***站点随处可见&#xff0c;***工具可以任意下载&#xff0c;对网络的安全造成了极大的威胁。所以&#xff0c;随着…

子网划分,主机号,网络号计算

这是在做网络题时总结的一些经验和见解&#xff0c;略显粗糙&#xff0c;主要是记一下常用的ABC3类地址和相关的子网号&#xff0c;主机号的计算 ip地址 在主机或路由器中存放的IP地址&#xff08;IPv4&#xff09;都是32位的二进制代码。它包含了网络号&#xff08;net-id&…

不要用偏执毁掉一个产业

不要用偏执毁掉一个产业 近日&#xff0c;李强先生利用中科院科技政策所网络信息安全联合课题组发布的《网络信息安全形势报告》&#xff0c;又在到处散布&#xff1a;“受此影响&#xff0c;很多‘站长’重操旧业&#xff0c;大批淫秽色情手机WAP网站死灰复燃。”的信息&#…

划分子网例题详解

划分子网例题详解(网络基础考试题目)1&#xff0c;假设取得网络地址200.200.200.0 &#xff0c;子网掩码为255.255.255.0。现在一个子网有100台主机&#xff0c;另外4个子网有20台主机&#xff0c;请问如何划分子网&#xff0c;才能满足要求。请写出五个子网的子网掩码、网络地…

IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?

背景知识 IP地址 IP地址被用来给Internet上的电脑一个编号。大家日常见到的情况是每台联网的PC上都需要有IP地址&#xff0c;才能正常通信。我们可以把“个人电脑”比作“一台电话”&#xff0c;那么“IP地址”就相当于“电话号码”&#xff0c;而Internet中的路由器&#xff0…

jquery ui tabs详解(中文) 【转载】

1 属性1.11 ajaxOptions,当选项卡加载内容时&#xff0c;添加一个ajax选项。只有ajax时&#xff0c;添加的ajax选项才起作用。默认值为null。上面的例子中&#xff0c;添加了beforeSend和success两个选项。ajax还有一些选项请参考jquery ajax&#xff0c;这里不做详解。。。1.1…

数据库操作:添加、插入、更新语句

SQL常用命令使用方法&#xff1a; (1) 数据记录筛选&#xff1a; sql"select * from 数据表 where 字段名字段值 order by 字段名 [desc]" sql"select * from 数据表 where 字段名 like %字段值% order by 字段名 [desc]" sql"select top 10 * from 数…

领域驱动设计的简略设计步骤

首先&#xff0c;需要根据需求建立一个初步的领域模型&#xff0c;至少要识别出领域对象和领域对象之间的关系&#xff08;可以是没有方向的关联关系&#xff09;。这些领域对象只应该放在领域层中。如果存在应用职责&#xff0c;可以识别出应用类。它们用来协调领域对象&#…

Struts2中Action访问Servlet API的三种方法

在通常的web开发中Request和Response对象比较常见&#xff0c;但在Struts2框架中由于Action能与JSP页面进行数据交互&#xff0c;所以通常都不会用到这两个对象。如果想在Struts2程序中用到这两个对象&#xff0c;也有解决方法 Struts2的Action并未直接与任何Servlet API耦合&a…

JavaScript 经典代码大全2

1.让浏览器窗口永远都不出现滚动条。 <body style"overflow-x:hidden;overflow-y:hidden">或<body style"overflow:hidden"> 或<body scrollno> 2&#xff0c;没有水平滚动条 <body style"overflow-x:hidden"> 3&am…

思科CCNA第一学期期末考试答案

1 第 3 层头部包含的哪一项信息可帮助数据传输&#xff1f; 端口号 设备物理地址 目的主机逻辑地址 虚拟连接标识符 2 IP 依靠 OSI 哪一层的协议来确定数据包是否已丢失并请求重传&#xff1f; 应用层 表示层 会话层 传输层 3 请参见图示…

电视剧潜伏的真正结局

李崖没有死&#xff0c;潜伏真正的结局其实是这样的&#xff1a;  李涯没有死。这是个秘密&#xff0c;余则成不知道&#xff0c;站长吴敬中知道&#xff0c;因为这是个阴谋。李涯坠楼后&#xff0c;立刻被秘密送到了天津陆军医院&#xff0c;医生保住了他的命&#xff0c;但…

思科CCNA第二学期期末考试答案

1.关于数据包通过路由器传输时的封装和解封的叙述&#xff0c;下列哪三项是正确的&#xff1f;&#xff08;选择三项。&#xff09; 路由器修改 TTL 字段&#xff0c;将其值减 1。 路由器将源 IP 更改为送出接口的 IP。 路由器保持相同的源 IP 和目的 IP。 路…

子网掩码与子网个数、主机地址个数的关系

IP地址&#xff1a; IP地址由网络号&#xff08;Network ID&#xff09;和主机号&#xff08;Host ID&#xff09;两部分组成。网络号标识的是Internet上的一个子网&#xff0c;而主机号标识的是子网中的某台主机。IP地址根据网络号和主机号的数量而分为A、B、C三类。 A类IP地址…

SQL Server 2005 高级程序设计 学习笔记(2)

1、替代inner join, left join(*), right join(*) select A.UserID, B.WorkFlowStatus from A ,B B where A.UserIDB.UserID 这样就可以替代Inner join select A.UserID, B.WorkFlowStatus from A ,B B where A.UserID*B.UserID 通过*或*替代 2、update的多种格式 表A有…

可汗学院 统计学(12到34集)

学习之前&#xff0c;需强调&#xff1a;概率是已知模型和参数&#xff0c;推数据&#xff1b;而统计是已知数据&#xff0c;推模型和参数。 第十二集&#xff1a;样本与总体   首先&#xff0c;为何需要样本呢&#xff1f;因为人类并不能总是获取总体数据&#xff0c;例如&…

关于xrdp的安装设置

参考链接http://linuxfan-linuxtips.blogspot.com/2010/03/get-xrdp-to-work-in-ubuntu.htmlhttp://chip.twbbs.org/blog/?p658http://www.mexlinux.com/how-to-install-xrdp-in-ubuntu/首先&#xff0c;你必须remove vnc4server&#xff0c;这个东西和这个软件有冲突sudo apt…

35-46集 中心极限定理、置信区间

第三十五集 中心极限定律   该定律是说随着样本n越来越大&#xff0c;这n个样本的m个均值会趋于正态分布。与大数定律的区别在于&#xff1a;大数定律描述的样本均值趋于总体均值&#xff0c;而中心极限定律描述的是样本均值的分布。 第三十六、七集 样本均值的抽样分布   …