C语言教程 位运算_第1页
C语言教程 位运算_第2页
C语言教程 位运算_第3页
C语言教程 位运算_第4页
C语言教程 位运算_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章位运算 语言程序设计 本章主要内容 C语言既是一种高级语言 广泛应用于应用软件的开发和程序设计 同时又是一种低级语言 可以用于系统软件的开发和程序设计 如自动控制系统中的过程控制 参数检测 数据通讯等控制程序 都可以综合利用C语言中的指针操作 位运算和位段技术来实现 本章介绍位运算的基本形式和常用运算符 并简要介绍位段的概念 一 位运算符和位运算 位运算概述所谓 位运算 是指按二进制位进行运算 位运算的特点 运算按二进制逐位进行 没有借位和进位 位运算量 整型 int short unsiged long 字符型 以补码 ASCII码形式存储 不可为实型 位运算符 P298表12 1 一 位运算符和位运算 位运算符还可与赋值运算符相结合 进行位运算赋值操作 如 a b等价于a a ba b等价于a a b注意 位运算时的数据类型为char int 分析时要化为二进制形式 但在程序中书写及输出结果时仍为char int 位运算符的使用 按位与 均为1时方为1 例一 main unsignedchara b printf Enteraandb scanf o o 计算00010000 a 00011000 b 0001000000001010 a 00010000 b 00000000 Enteraandb 20 30a b 20 Enteraandb 12 20a b 0 位运算符的使用 按位或 均为0时方为0 例二 main unsignedchara b printf Enteraandb scanf o o Enteraandb 20 30a b 30 Enteraandb 12 20a b 32 计算00010000 a 00011000 b 0001100000001010 a 00010000 b 00011010 位运算符的使用 按位异或 二者相异方为1 例三 以下程序的功能是将a数据的低4位取反 includemain unsignedchara 0 x39 b a a b printf x n a 答案 0 x0f 计算00111001 a 00001111 b 00110110 位运算符的使用 按位取反 各位反转 例四 main chara 3 intb 10 printf a d b d n a b 结果 a 4 b 11 计算 a 补码 11111100原码 10000100 b 补码 11110101原码 10001011 位运算符的使用 左移运算 a n将a中各位向左移n位 右端补0 高位溢出丢弃 例 a a n 可写为a n 相当于a 2n 高位未溢出时 例五 以下程序的运行结果是 main unsignedinta 0 x3ef b b a 2 printf x x n a b A 3ef fbB 3ef fbcC fbc 3efD fbc fbc 结果 B 位运算符的使用 左移运算 例六 以下程序的运行结果是 main inta 12 b b 0 x1f5 结果 12 96 计算已知 0 x1f5为111110101且 a为1100 a 3为1100000111110101 001100000001100000 96 位运算符的使用 右移运算 a n将a中各位右移n位 溢出则舍弃 左端 a为正数时 符号位为0 填0 a为负数时 符号位为1 填0或填1与系统有关填0 逻辑右移 填1 算术右移 TC使用算术右移 位运算符的使用 右移运算 例七 以下程序的运行结果是 main inta 9 b 9 printf d d a 2 b 2 结果 2 3 9的补码 1111111111110111 右移后为1111111111111101 应用示例 从整数a最右端第m个位置开始取该位开始右面n位 算法如下 b a m n 1 c 0 n d b c注 位自右向左从0开始编号 应用示例 将一个整数a循环右移n位 算法如下 b a nc c b 二 位段 C语言允许在一个结构体中以位为单位来指定其成员所占内存长度 这种以位为单位的成员称为 位段 示例 structdata inti 非位段 unsignedinta 3 占3位 unsignedintb 5 占5位 unsignedint 3 无名位段 不可用 unsignedintc 2 占2位 unsignedint 0 到下一字节起始处

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论