你想了解的位运算

前言:

     距离学习C语言已经过去了2年了,这期间接触了C++、java,做过一些课设。有些是用C++做的,有些则是用java做的,但是自我感觉,编程语言只是一门工具,在其中运用到的还是我们的计算机基础。每次遇到瓶颈的时候,我总是会想,我的基础是否牢靠,这里特指我的C语言基础。是的,期间翻过那么一两次书,自以为已经复习了一遍,但是未曾深入了解,或者未曾归纳总结的,即使之后再次遇到,也只是一笑,然后回头查看资料。

     哈哈哈,废话不多说,我就是想把C语言当中的位运算(当然啦,c++、java都是一样的)和文件操作熟悉一下。每个例子讲解的格式都是:(六个运算&|^~<<>>)

含义

实例

用途

 


一、&按位运算符

含义:参与运算的两个数据,按二进制位进行与运算。如果两个相应的二进制都为1,结果为1;否则为0。(如果是负数就需要以补码形式表示为二进制数再参与运算

实例

1 &11
1&00
0&1

0

0&00

 

用途

1.清零

     如果要对一个存储单元清零,就是让它的二进制位为0,所以我们可以找到一个二进制数(满足:原来数中为1的数,新数为0)然后二者进行按位运算即可。

2.取一个数中某些指定位

     eg我们要对一个字符数据取出其低8位的值是,我们就可以让这个数与一个上8位都为0,下8位为1的二进制数&运算。

 1101010101011011
&0000000011111111
 0000000001011011

3.一个编程运用:如果我们需要完成大小写英文字母的转化(当然你可以直接用+‘32’),那么我们可以看看大小写英文字母ASCALL中,A~Z(65~90),a~z(97~122)。那么看看其二进制的区别,这里以A和a作为例子:

A100 0001
a

110 0001

你就会发现它们之间只是第三位(左到右)的不同,大写为0,小写为1,所以只需要知道找到符合的二进制数进行&运算和I运算。

 

二、|按位或运算

含义:参与运算的两个数据,按二进制位进行或运算。只要存在1,结果就为1。

实例

1 | 11
1 | 01
0 | 11
0 | 00

用途:同时,可以参与数字转换的计算。

 

三、^按位异或

含义(XOR):参与运算的两个数据,按二进制位进行按位异或运算。同号结果为0,异号结果为1。

实例

1 ^ 10
1 ^ 01
0 ^ 11
0 ^ 00

用途

1.使特定位翻转,这个理解和上面一样,我们可以将二进制位0,1转换。

2.交换两个值,不用临时变量(这个在java基础专栏里面也有提到,因为这样形式比较复杂,常用于加密算法)

a = a^b;//异或值赋给a
b = b^a;//b^a之后的值为a,赋值给b
a = a^b;//a^b之后的值为b,赋值给a

为什么可以进行这样的操作,那是因为异或运算符有可逆性(运算之后再次运算就可以回到原值)。

 

四、~取反运算

含义:~是一个单目运算符,用来对一个二进制进行取反,即0变1,1变0。

实例

~0010101
 1101010

用途:在二进制计算的时候可以考虑运用到。

 

五、<<左移运算

含义:用来将一个数的各二进制位全部左移若干位(若高位左移溢出,舍去)。

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

用途左移一位相当于该数乘以2,所以我们可以用在程序计算中,直接循环<<,不需要*=2

 

六、>>右移运算

含义:用来将一个数的各二进制位全部右移若干位。

实例:a>>2表示将a的各个二进制位右移2位,移到右端的低位被舍弃,对无符号数,高位补0。

a==1111 1110(为-2) 
无符号数:a>>10111 1111(逻辑右移时)
有符号数:a>>11111 1111(算术右移时)

用途右移一位相当于除以2,右移n位相当于除以2^n

注意

  • 对无符号数,右移时左边高位移入0;
  • 对于有符号的值,如果原来的符号位为0,则左边也是移入0。
  • 如果符号位原来为1,则左边移入0还是1,要取决于所用的计算机系统。有的1,有的0。
  • 移入0的称为“逻辑右移”,移入1的称为“算术右移”。

 

总结:

     将这些运算符结合起来,灵活的使用,就会有神奇的效果(如有误,请指出,谢谢)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
智慧校园建设方案旨在通过信息化手段提升教育、管理和服务水平,实现资源数字化、工作流程化、管理高效化和决策智能化。方案包括智慧校园信息化平台和安防平台的建设,涉及教学、科研、管理和服务等多个方面,以满足现代教育和培训需求。 技术服务要求强调了统一支撑平台的建设,包括数据标准、接口标准、代码标准和用户信息标准的统一制定。平台需满足信创和X86交叉适配要求,确保安全自主可控的系统开发环境。此外,方案还涵盖了用户中心系统、统一认证授权中心、统一工作流中心、统一智能报表中心等多个模块,以及数据共享中心、语音识别、移动服务终端等功能,以实现校园内外部信息的互联互通和资源共享。 智慧校园信息化平台的建设还包括了对教学管理、人事管理、公文管理、档案管理、即时通讯、会议管理、督办工作、资产管理等方面的数字化和自动化升级。这些模块的集成旨在提高工作效率,优化资源配置,加强监督管理,并通过移动应用等技术手段,实现随时随地的信息访问和业务处理。 安防平台的建设则侧重于校园安全,包括停车场管理、人脸识别测温、访客自助登记、视频监控等多个系统。这些系统的集成旨在提高校园的安全管理水平,实现对校园内外人员和车辆的有效监控和管理,确保校园环境的安全稳定。 最后,方案还提到了对固定资产的管理,包括购置、使用、归还、报废等全生命周期的管理,以及对网络设备、安防设备、服务器等硬件设施的配置和管理。通过这些措施,智慧校园建设方案旨在为校园提供一个安全、高效、便捷的学习和工作环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

threecat.up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值