收藏 分享(赏)

位赋值运算符.ppt

上传人:scg750829 文档编号:6700569 上传时间:2019-04-21 格式:PPT 页数:17 大小:274.50KB
下载 相关 举报
位赋值运算符.ppt_第1页
第1页 / 共17页
位赋值运算符.ppt_第2页
第2页 / 共17页
位赋值运算符.ppt_第3页
第3页 / 共17页
位赋值运算符.ppt_第4页
第4页 / 共17页
位赋值运算符.ppt_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、第12章 位运算,位运算 位赋值运算符位段应用举例,3. 位运算有:,12.1 位运算,1.位运算和指针一样,都是C语言的重要特色。,2.位运算的概念:所谓位运算,是指进行二进制位的运算。例如:将一个存储单元中的各二进制位左移或右移1位,两个数按位相加等。,说明: (1)位运算量a,b只能是整型或字符型数据,不能是实型数据。 (2)位运算符中除按位取反运算符为单目运算符外,其它均为双目运算符。,12.1 位运算,12.1.1 位逻辑运算符,1. 按位与运算符&运算规则:如果参加运算的两个运算量的相应位都是1,则该位的结果值为1,否则为0。例如: a:01111010 b:10011000 &:

2、00011000 即a&b=0x18,12.1 位运算,12.1.1 位逻辑运算符,2.按位或运算符| 运算规则:如果两个运算量的相应位都是0,则该位的结果值为0,否则为1。例如: a:01111010 b:10011000 |: 11111010 即a|b=0xfa,12.1 位运算,12.1.1 位逻辑运算符,3.按位异或运算符 运算规则:如果两个运算量的相应位不同,则该位的结果值为1,否则为0。 例如: a:01111010 b:10011000 :11100010 即ab=0xe2,12.1 位运算,12.1.1 位逻辑运算符,4.按位取反运算符 运算规则:对一个运算量的每一位都取反,

3、即将1变为0,0变为1。例如: a: 01111010 a:10000101 即a=0x85,12.1 位运算,12.1.1 位逻辑运算符,位逻辑运算规则,12.1 位运算,12.1.1 位逻辑运算符,5.位逻辑运算符的用途 (1)判断一个数据的某位是否为1。 (2)屏蔽掉一个数据中的某些位。 (3)清零。 (4)保留若干位。 (5)把一个数据的某位置为1。 (6)把一个数据的某位翻转,即1变为0,0变为1。,12.1 位运算,12.1.2 移位运算符,1. 左移运算符运算规则:对左边的运算量的每一位全部左移右边运算量表示的位数。 例如:a2表示将a的各位依次向左移2位,a的最高2位移出去舍弃

4、,空出的低2位以0填补。,12.1 位运算,12.1.2 移位运算符,1.右移运算符运算规则:对左边的运算量的每一位全部右移右边运算量表示的位数,低位被移出去舍弃,空出的高位补0还是补1,分两种情况: (1)对无符号数进行右移时,空出的高位补0。这种右移称为逻辑右移。 (2)对带符号数进行右移时,空出的高位以符号位填补。即正数补0,负数补1。这种右移称为算术右移。,12.2 位赋值运算符,位赋值运算符是位运算符与赋值运算符的结合。,位赋值运算符,12.3 位段,C语言允许在一个结构体中以位为单位来指定其成员所占的内存长度,这种以位为单位的成员称为“位段”或“位域”。“位段”或“位域”是一种特殊

5、的结构体成员。 定义的一般格式为: struct结构体名 类型 成员1: 长度; 类型 成员2: 长度; 类型 成员n: 长度; ; 其中,冒号前的成员为位段,冒号后的长度表示存储位段需要占用字节的位数。,例如: struct device unsigned a:1;unsigned b:2;unsigned c:4;int x;float y; data; 结构体变量data包含5个成员,它们分别是a,b,c,x,y。其中,a、b、c为位段,分别占用1位、2位、4位,即a、b、c共占用7位。这样,用一个字节就可以存储这三个位段。x、y为基本类型的成员,分别需要2个、4个字节存储。因此,结构体

6、变量data需要占用7个字节的内存单元。,12.3 位段,例如: struct device unsigned a:1;unsigned b:2;unsigned c:4;int x;float y; data;,结构体变量data包含5个成员,它们分别是a,b,c,x,y。其中,a、b、c为位段,分别占用1位、2位、4位,即a、b、c共占用7位。这样,用一个字节就可以存储这三个位段。x、y为基本类型的成员,分别需要2个、4个字节存储。因此,结构体变量data需要占用7个字节的内存单元。,12.4 应用举例,例12-1 输出一个整数的二进制形式。,程序: main( ) int num,bit

7、,i;unsigned test=0x8000;printf(“input mum:“);scanf(“%d“, ,运行结果: input num:12345 binary of 3039 is: 0011000000111001,12.4 应用举例,例12-2 循环移位的实现。,左移 : unsigned rol(unsigned x,int n) unsigned y;y=(x(16-n);return(y); ,主程序: main( ) unsigned rol(unsigned x,int n);unsigned ror(unsigned x, int n);unsigned a;int n;printf(“input a,n:“);scanf(“%x,%d“, ,右移 : unsigned ror(unsigned x, int n) unsigned y;y=(xn)|(x(16-n);return(y); ,小 结,位运算 位赋值运算符位段应用举例,作业和上机实验,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初级教育 > 小学教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报