kj第11章位运算.pptVIP

  • 1
  • 0
  • 约7.04千字
  • 约 29页
  • 2015-09-06 发布于重庆
  • 举报
kj第11章位运算.ppt

第11章 位运算 本章概述 C语言有一个重要特点就是可以直接对二进制位进行操作,即位运算。 二进制位简称位(bit),其值为0或1。计算机真正执行的正是由0和1构成的机器指令,计算机内数据也是由二进制表示的。 数在计算机内均是以补码的形式存储的 。 本章介绍位运算和位段结构的有关知识。 本章的学习目标 本章教学目的:理解位运算的概念,掌握基本位运算运算符的使用,理解位段的概念。 本章教学重点:基本位运算运算符的使用 本章教学难点:位段的概念 主要内容 11.1 位运算符 11.2 位运算 11.3 位运算应用举例 11.4 位段结构 11.1 位运算符 11.2 位运算 11.2 位运算 11.2 位运算 11.2 位运算 11.2 位运算 11.2 位运算 11.3 位运算应用举例 # include stdio.h int main() {unsigned int n,a,b,c,d; printf(Input a Hex number:); scanf(%x,a); printf(\nInput the number of bit to move:); scanf(%d,n); b=a16-n; c=an; d=b|c; printf(\nThe result of move:%x,d); return 0; } 11.4 位段结构 1. 位段结构的概念 11.5 本章小结 本章介绍了C语言的位运算 。 首先,介绍了C语言的位运算符。 接下来,对C语言的各个位运算符的用法进行了详细介绍。 之后,举例说明C语言位运算的应用方法。 最后,介绍了C语言的位段结构 C语言程序设计 第11章 位运算 本章概述 本章的学习目标 主要内容 a^b:对a与b的各对应位进行“按位异或”运算 按位异或 ^ a|b:对a与b的各对应位进行“按位或”运算 按位或 | ab:对a与b的各对应位进行“按位与”运算 按位与 a2:将变量a的各位全部右移2位,对于无符号数和正整数,高位补0;对于负整数,高位补1(适用于turboc系统) 右移 a2:将变量a的各位全部左移2位,高位丢失,低位补0 左移 ~a:对变量a的全部位取反 按位取反 ~ 举例 功能 位运算符 取反运算“~”是一个单目运算符,运算量在运算符之后,取反运算的功能是将一个数据中所有位都取其相反值,即1变0,0变1。 运算规则为: ~1=0 ~0=1 例11.1 对于无符号的字符型数据 a=(18)10 =2 , 则~a等于2 ,即(237)10 C程序如下: 11.2.1 按位取反运算 # include stdio.h int main() { unsigned char a=18,b; b=~a; printf(“~a=%d”,b); return 0; } 运行结果为: ~a= 237 注意以下程序与左面程序及运行结果的区别: # include stdio.h int main() { char a=18,b; b=~a; printf(“~a=%d”,b); return 0; } 运行结果:-19 前一个程序结果很好理解,后一个因为a是带符号数据,因此~a=2的结果是一负数的补码,转换为原码时,第1位符号位不变,对剩余的部分先减1,再全部取反,因此得到的二进制原码为即十进制的-19。 11.2.2 左移运算 左移运算“”是一个双目运算符,左移运算的功能是将一个数据所有位向左移若干位,左边(高位)移出的部分舍去,右边(低位)自动补零。 例11.2 对于无符号字符型数据 a=(18)10 =2 , a 3的结果是2 ,即(144)10 C程序如下: # include stdio.h int main() { unsigned char a=18, b; b=a3; printf(“a3=%d”,b); } 运行结果为: a3=144 注意以下程序与左面程序的区别: # include stdio.h int main() {char a=18,b; b=a3; printf(“a3=%d”,b); return 0; } 运行结果为: a3=-112 原因同前,对于带符号数a,因a3得到的2, 是一负数

文档评论(0)

1亿VIP精品文档

相关文档