第十一章 结构类型l数据描述.pptVIP

  • 5
  • 0
  • 约1.42万字
  • 约 46页
  • 2016-12-07 发布于湖南
  • 举报
第十一章 结构类型l数据描述

说明: ? 用 typedef 不是也不能建立新的数据类型,也不能 用来定义变量,只是以一个新的类型名(通常用大写 字母表示)代替已存在的类型名,以此简化程序中变 量的类型定义。 ? 使用typedef 有利于程序的通用性和可移植性。 例如:程序中有:int a,b,c; 要修改为:long a,b,c; 则可用 typedef 定义: typedef int INTEGER; 在程序中用INTEGER定义变量,当修改程序时再用 typedef 定义即可: typedef long INTEGER; 11.5 位段结构 1. 位运算 C 既具有高级语言的特点,又具有低级语言的功能, 位运算能力就是其特色之一。所谓位运算就是指进行二 进制位的运算。 C提供的位运算符有: 运算符 含义 按位与 | 按位或 ? 按位异或 ~ 取反 左移 右移 说明: ? 位运算符中除“~”外,其余均为二目运算符,即要求 两侧各有一个运算量。 ? 运算量只能是整型或字符型的数据, 不能为实型数据。 1) “按位与” 运算符 参加运算的两个运算量之对应位都为1,则该位的结 果为1,否则为0。 例: 35=1 3的补码: 5的补码: 即: 00=0 01=0 10=0 11=1 运算符的用途: ? 清零 如果想将一个单元清零(全部二进位为?),则只要找一个数的补码的对应位0与被清零数的对应位1刚好对应,然后使两者进行 运算。 如: 00000000 ? 取一个数中的某些指定位 如: a: 0010110010101100 b: 0000000011111111 (377)8 0000000010101100 得到 a 的低 8 位 ? 保留一个数的某一位 如: (84)10 (59)10 (16)10 2) “按位或”运算符 | 参加运算的两个运算量之对应位只要有一位为1,则 该位的结果为1。即: 0 | 0 = 0 0 | 1 = 1 1 | 0 = 1 1 | 1 = 1 如: (060)8 | (017)8 (077)8 即一个数与017进行按位或运算,就可将该数的低4 位全置为1; 与0377进行按位或运算,就可将该数的低8 位全置为1。 3) “异或”运算符 ^ 参加运算的两个运算量的对应位相同,则该位的结果为0。否则为1。即: 0^0 = 0 0^1 = 1 1^0 = 1 1^1 = 0 如: (57)10 、(071)8 ^ (42)10 、(052)8 (19)10 、(023)8 ^ 运算符的用途: 使指定的位翻转 如: ^ 对应原数的低4位均置为1 原数的低4位被翻转 若 a=3, b=4。 有 a=a^b; b=b^a; a=a^b; 则 a, b 的值多少? 4) “取反” 运算符 ~ ~ 运算是对一个二进制数按位取反,即将0变为1, 1变为0。 8位全1用377; 16位全1用177777; 32位全1用37777777777。 5) 左移运算符 用来将一个数的各二进制位全部左移若干位,并在 右边补若干个0。高位左移后溢出,舍弃不起作用。 运算的最大用途是做乘法运算。将乘以 2n 的幂运算处理为左移 n 位。 a的值 a的补码 a1 a2 640 01 1270 01 如: 6) 右移运算符

文档评论(0)

1亿VIP精品文档

相关文档