二、位运算符 在C语言中,提供位逻辑运算符和移位运算符。 1、位逻辑运算符 C语言中位逻辑运算符有四种:按位与、按位或、按位异或、按位取反。 1)“按位与”运算符——“” 参加运算的两个数据,按二进位进行“与”运算。 运算规则是:00=0; 01=0; 10=0; 11=1; 【例11-1】35值是多少? #include stdio.h void main( ) { printf(%d\n,35); } 【例11-2】-3-5值是多少? #include stdio.h void main( ) { printf(%d\n,-3-5); } 2)“按位或”运算符——“|” 两个相应的二进位中只要有一个为1,该位的结果值为1。 运算规则是:0|0=0; 0|1=1; 1|0=1; 1|1=1; 【例11-3】060|017的值是多少?(八进制) #include stdio.h void main( ) { printf(%o\n,060|017); } 3)“按位异或”运算符 —— “∧” 参加运算的两个二进位同号,则结果为0(假);异号则为1(真)。 运算规则是:0∧0=0; 0∧1=1; 1∧0=1; 1∧1=0; 【例11-4】0x39∧0x2a的值是多少?(十六进制) #include stdio.h void main( ) { printf(%x\n,0x39^0x2a); } 4)“按位取反”运算符——“~” “~”是一个单目运算符,用来对一个二进制数按位取反,即将0变1,1变0。 【例11-5】~025的值是多少?(八进制) #include stdio.h void main( ) { printf(%o\n,~025); } 2、移位运算符 1)“左移”运算符——“<<” 用来将一个数的各二进位全部左移若干位,右补0。 【例11-6】若a=15; a=a2; 则a的值是多少? #include stdio.h void main( ) { int a=15; a=a2; printf(%d\n,a); } 说明: 1) 高位左移后溢出,舍弃不起作用。 2) 左移1位相当于该数乘以21,左移2位相当于该数乘以22,即左移n位相当于该数乘以2n。此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。 例如:假设以一个字节(8位)存一个整数,若a为无符号整型变量,则a=64;时,左移一位时溢出的是“0”,相当于乘以21,值为128;而左移2位时,溢出的高位是“01”,值为0。如图所示。 3) 左移比乘法运算快得多,有些C编译系统自动将乘2的运算用左移一位来实现,将乘2n的幂运算处理为左移n位。 2)“右移”运算符 —— “>>” 移到右端的低位被舍弃。 【例11-7】若a=017; a=a2; 则a的值是多少? #include stdio.h void main( ) { int a=017; a=a2; printf(%o\n,a); } 说明: 1) 右移1位相当于除以21,右移2位相当于除以22,右移n位相当于除以2n。 2) 在右移时,需要注意符号位问题。对无符号数,右移时左边高位移入0。对于有符号的值,如果原来符号位为0(该数为正),则左边也是移入0。如果符号位原来为1(即负数),则左边移入0还是1,要取决于所用的计算机系统:有的系统移入0,有的移入1。(移入0的称为“逻辑右移”,即简单右移;移入1的称为“算术右移”) 3) 在VC编译系统中,采用的是“算术右移”,即对有符号数右移时,如果符号位原来为1,左面移入高位的是1。 【例11-8】若a=0xfffffffe; a=a1; 则a的值是多少? #include stdio.h void main( ) { int a=0xfffffffe; a=a1; printf(%d\n,a); } 三、位运算的常用用法 1、置位0 将某些位设置为0。在控制某些设备时,用于关闭某个装置,比如关闭显卡的输入。使用“按位与”运算,在需要置为0的位上与“0”进行“按位与”,保持不变的位与“1”进行“按位与”。 例如:将8位二进制最低位置为0,其它位不变,如图所示。 2、置位1
您可能关注的文档
最近下载
- 2024年鲁教版五四制六年级上册数学期末综合检测试卷及答案.docx VIP
- 手术机器人行业深度报告:革命性外科手术工具,国产手术机器人进入高速发展阶段.pptx VIP
- 云驾岭矿矿井煤矿毕业设计报告.doc VIP
- BP85226D参考设计_-5V300mA 晶丰明源家电电源.pdf VIP
- SH∕T 0248-2019 柴油和民用取暖油冷滤点测定法.pdf
- Tesseral-中文-用户手册(全).pdf VIP
- 工科类本科数学基础课程教学基本要求.pdf VIP
- 低空环境智能感知关键技术及应用-VALSE 2025-2025.pdf VIP
- 样板支部申报书模板2.pdf VIP
- 《机械制造技术》课程标准.docx VIP
原创力文档

文档评论(0)