




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第12章位运算 本章要点位运算符和位的逻辑运算位的复合运算位段的概念与运用本章难点对位段的理解 12 1二进制位运算概述 1 位 bit 是指二进制中的位 它是计算机能处理的最小单位 2 字节 byte 是计算机处理的基本单位 计算机的内存是按字节进行分配的 一个字节有八位二进制数组成 所以我们在C语言中数据类型都是以字节为基本单元 3 补码 一个正数的补码是其本身 一个负数的补码是其绝对值按位取反后加1 计算机是以补码的形式存放数的 例如 7的补码是1111111111111001 12 2位的运算符 一 位运算的概念 位运算 以二进制位为单位的运算 二 位运算符 位运算 仅限于整数 整型数和字符型 表12 1位运算符及其功能 12 2扩展运算符及其含义 位逻辑运算符 按位求反 按位与 按位异或 按位或 运算规则 1 0 0 10 0 00 1 01 0 01 1 10 0 00 1 11 0 11 1 00 0 00 1 11 0 11 1 1 例如 main unsignedchara b a 0 x9d b 0 xa5 printf a x n a printf a 输出结果 a a b a b a b 62 85 bd 38 位逻辑运算符的应用 运算符的应用 与0相 清0 与1相 取指定位 运算符的应用 与1相 可对某些位定值为1 运算符的应用 与1相 使特定位翻转 2 位移位运算符 按位右移 运算规则 移位时 移出的位数全部丢失 移出的空位补入的数与左移还是右移有关 左移 补入的数全都是0 例如 unsigneda 3 a 1的十进制值是 12 1 3 位复合赋值运算符 由位运算符与赋值运算符组成 例如 a b相当于a a ba 2相当于a a 2 总结位运算符 1 位运算符中按位取反运算符的优先级最高 它比算术运算符 关系运算符 逻辑运算符和其他位运算符都高 2 位运算符与赋值运算符相结合可以组成复合的赋值运算符 例如 3 如果两个类型长度不同的数进行位运算 则需要进行补位 如a b b为int型 a为long型 系统将二者右端对齐并对较短的数b进行左补位 如果b为正数 则左侧16位补满0 如b为负数 左端应补满1 如果b为无符号整型数 则左侧补满0 例 设计一个函数 给出一个数的原码 得到该数的补码 分析 根据补码的定义 一个正数的补码等于该数的原码 一个负数的补码等于该数的反码加1 假设a为16位整数 则步骤为 1 判别给定整数是正数还是负数 方法是 z a若z等于0 则a为正数 若为非0 则a为负数 2 如果z非0 有z a 1 0 x80000 否则z a 3 返回z 程序如下 includemain inta get int printf 输入一个十六进制数 n scanf x 运行结果为 输入一个十六进制数 4e5它的补码是 4e5 三 位运算符的优先级 添加 位运算符自身的优先级为 从高到低 位运算符与其他运算符相比较优先级为 从高到低 算术运算符 关系运算符 逻辑运算符 条件运算符 赋值 复合赋值 运算符 逗号运算符 例如 chara 9 b 020 printf o n a 输出结果 40 12 3位段 位段 在一个结构体中可以以位为单位来指定其成员所占内存长度 这种以位为单位的成员称为位段 或位域 如 structpacked data unsigneda 2 unsignedb 3 unsignedc 4 inti data 位段的引用 结构体变量名 位段成员名 如 structpacked data unsigneda 2 unsignedb 3 unsignedc 4 inti data 位段的引用如下 data a 2 data b 7 data c 9 注意 位段允许的最大值范围 data a 9 说明 位段成员的类型必须指定为unsignedint类型 允许在位段中定义无名字段 其含义为跳过该字节剩余的位或指定的位不用 当无名字长度为0时 跳过该字节剩余的位不用 当无名字段长度为n时 跳过n位不用 如 structpacked data unsigneda 2 unsignedb 3 unsigned 0 unsignedc 4 inti data 又如 structpacked data unsigneda 2 unsignedb 3 unsigned 2 unsignedc 4 inti data 位段的长度不能大于存储单元的长度 即 16位 不能定义位段数组 位段可以在数值表达式中引用 也可以用整型格式输出 12 4小结 1 按位与 C语言规定按位与的运算规则为 如果参与运算数据的二进制位都为1 则结果为1 否则只要有0出现的那个二进制位结果都为0 2 按位或 按位或的运算规则为 只要参与运算的两个数中对应的二进制位为1 则结果的对应位为1 否则为0 3 按位异或 按位异或运算的运算规则为 如果两个运算对象的对应位不相同 则结果为1 否则为0 4 按位取反 按位取反运算的规则为 将一个数中的各位二进制数取反 即1变为0 0变为1 5 左移运算 右移运算符的运算规则是 将运算对象中的每个二进制位向右移若干位 从右边移出的低位部分被舍弃 对无符号的数来说 左边空出的部分补0 对有符号数来说 如果符号位为0 则空出的高位部分补0 对于有符号数中的负数 取决于所使用的系统 补0的称为 逻辑右移 补1的称为 算术右移 7 所谓位段就是将一个机器字分成几段 以占用二进制位的数目来管理数据 它常常是用来表示和处理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 本科html考试试题及答案
- 北京高中数学考试卷子及答案
- N6-Allylamino-carbonothioyl-lysine-13C6-15N2-生命科学试剂-MCE
- 电焊工焊接知识培训总结课件
- hu3S193-生命科学试剂-MCE
- 保险金融资格考试题库及答案
- 新解读《GB-T 2999-2016耐火材料 颗粒体积密度试验方法》
- 高楼居民安全知识培训课件
- 电炉操作知识培训课件
- 电源线缆安全知识培训课件
- 2024年《经济法基础》教案(附件版)
- 2024年无人机相关项目招商引资方案
- 中职教育人工智能技术赋能
- 《机电一体化系统设计》第四章课件
- 《税费计算与申报》课件 项目二 增值税的计算与申报任务三 增值税的申报
- 新污染物科普知识讲座
- 运动性失语的护理课件
- 阀门检验报告汇总266黄铜球阀
- SICD植入护理配合
- 北京外国语大学611英语基础测试(技能)历年考研真题及详解
- 弱电工程施工进度表(甘特图)
评论
0/150
提交评论