C语言教程位运算PPT课件

上传人:hs****ma 文档编号:568203835 上传时间:2024-07-23 格式:PPT 页数:17 大小:237KB
返回 下载 相关 举报
C语言教程位运算PPT课件_第1页
第1页 / 共17页
C语言教程位运算PPT课件_第2页
第2页 / 共17页
C语言教程位运算PPT课件_第3页
第3页 / 共17页
C语言教程位运算PPT课件_第4页
第4页 / 共17页
C语言教程位运算PPT课件_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《C语言教程位运算PPT课件》由会员分享,可在线阅读,更多相关《C语言教程位运算PPT课件(17页珍藏版)》请在金锄头文库上搜索。

1、第八章 位运算 语言程序设计语言程序设计1本章主要内容nC语言既是一种高级语言,广泛应用于应用软件的开发和程序设计,同时又是一种低级语言,可以用于系统软件的开发和程序设计,如自动控制系统中的过程控制、参数检测、数据通讯等控制程序,都可以综合利用C语言中的指针操作、位运算和位段技术来实现。n本章介绍位运算的基本形式和常用运算符,并简要介绍位段的概念。2一、位运算符和位运算n位运算概述所谓“位运算”,是指按二进制位进行运算。位运算的特点:运算按二进制逐位进行没有借位和进位。位运算量:整型(int,short,unsiged,long)/字符型(以补码/ASCII码形式存储),不可为实型。位运算符:

2、P298 表12.1 & | 3一、位运算符和位运算n位运算符还可与赋值运算符相结合,进行位运算赋值操作。如: a&=b 等价于 a=a&b a=b 等价于 a=abn注意:位运算时的数据类型为char/int,分析时要化为二进制形式,但在程序中书写及输出结果时仍为char/int。4位运算符的使用n按位与 & (均为1时方为1)【例一】main( ) unsigned char a,b; printf(“Enter a and b:”); scanf(“%o,%o”,&a,&b); printf(“a&b=%on”,a&b); 计算 00010000 (a) & 00011000 (b) 0

3、0010000 00001010 (a) & 00010000 (b) 00000000 Enter a and b: 20,30a&b=20Enter a and b: 12,20a&b=05位运算符的使用n按位或 | (均为0时方为0) 【例二】main( ) unsigned char a,b; printf(“Enter a and b:”); scanf(“%o,%o”,&a,&b); printf(“a | b=%on”,a|b); Enter a and b: 20,30a | b=30Enter a and b: 12,20a | b=32计算 00010000 (a) | 0

4、0011000 (b) 00011000 00001010 (a) | 00010000 (b) 00011010 6位运算符的使用n按位异或 (二者相异方为1) 【例三】以下程序的功能是将a数据的低4位取反。#include main() unsigned char a=0x39, b= ; a=ab; printf(%xn, a);答案:0x0f 计算 00111001 (a) 00001111 (b) 00110110 7位运算符的使用n按位取反 (各位反转) 【例四】 main( ) char a=3; int b=10; printf(“a=%d,b=%dn,a,b); 结果:a=-

5、4,b=-11 计算 a:补码: 11111100原码: 10000100 b:补码:11110101原码:100010118位运算符的使用n左移运算 an 将a中各位向左移n位,右端补0,高位溢出丢弃。 例: a= an (可写为a=n),相当于a2n(高位未溢出时) 【例五】以下程序的运行结果是 。main() unsigned int a=0x3ef,b; b=a2; printf(%x,%xn,a,b);A)3ef,fb B) 3ef,fbc C) fbc,3ef D) fbc,fbc结果:B 9位运算符的使用n左移运算 【例六】以下程序的运行结果是 。main() int a=12,

6、b; b=0x1f5 & a3; printf(%d,%dn,a,b);结果:12,96计算已知:0x1f5为1 1111 0101且:a为1100 a an 将a中各位右移n位,溢出则舍弃。左端a为正数时(符号位为0),填0;a为负数时(符号位为1),填0或填1与系统有关 填0(逻辑右移) 填1(算术右移) TC使用算术右移11位运算符的使用n右移运算 【例七】以下程序的运行结果是 。main() int a=9,b=-9; printf(%d,%d,a2,b2);结果:2,-3 (-9的补码 :1111111111110111,右移后为1111111111111101)。12应用示例 从整

7、数a最右端第m个位置开始取该位开始右面n位 。 算法如下: b=a(m-n+1) c=(0n) d=b&c 注:位自右向左从0开始编号13应用示例 将一个整数a循环右移n位。算法如下: b=anc=c|b 14二、位段nC语言允许在一个结构体中以位为单位来指定其成员所占内存长度。这种以位为单位的成员称为“位段”。15示例 struct data int i; /*非位段*/ unsigned int a:3; /*占3位*/ unsigned int b:5; /*占5位*/ unsigned int :3; /*无名位段不可用*/ unsigned int c:2; /*占2位*/ unsigned int :0; /*到下一字节起始处*/ unsigned int d:3; /*占3位*/ unsigned int :0; /*到下一字节起始处*/ float f; /*非位段*/ ; 16n引用: x.a x.b=1 x.d=7n(注意:如果x.d=8,则将出现“溢出”使x.d=0) 17

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号