- 1
- 0
- 约2.84千字
- 约 17页
- 2019-08-29 发布于广东
- 举报
第13章 位操作 教学目标 位运算符的含义 简单的位运算 13.1概述 位运算: 对二进制位的运算 一、数的表示 1、二进制 特点? 运算规则? 二进制与十进制之间的转化? 例:(25)10 = (11001)2 2、八进制和十六进制 二、八、十六进制如何转化? 一、数的表示 3、原码、反码及补码 计算机中的数均以补码形式存放, 一个有符号定点数的最高位为符号位,0是正,1是负。 正数的反码和补码都是和原码相同。 1. 原码 原码就是这个数本身的二进制形式。 例如(假设是8位的字长) 1000011 就是-3 0000011 就是+3 2. 反码 负数的反码是将其原码除符号位之外的各位求反 [-3]反=反3. 补码 负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。 [-3]补=补一个数和它的补码是可逆的。 一、数的表示 3、原码、反码及补码 为什么要设立补码呢? (1)是为了能让计算机执行减法: [a-b]补=a补+(-b)补 (2)是为了统一正0和负0 正零负零这两个数其实都是0,可他们的原码却有不同的表示,但是他们的补码是一样的,都特别注意: 如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!) 补 =反+1 1 =(1最高位溢出了,符号位变成了0) 二、位运算符 C语言中有关二进制位的运算符有六个:(按优先级的高低) ~ ^ | 取反 左移 右移 与 异或 或 位运算符 二、位运算符 位运算符 二、位运算符 位运算符 二、位运算符 位运算符 二、位运算符 位运算符 二、位运算符 思考 13.2 位运算应用举例 13.2 位运算应用举例 总结 位运算符的含义 简单的位运算 祝福 Thank you * * 双目运算符 复合赋值运算符 ~= = = = ^= |= 运算分量均为整型或字符型量。 1、按位求反 ~ 036 几进制? 二进制 00 011 110 按位取反 11 100 001 即:~036 = 2 运算分量均为整型或字符型量。 1、按位求反 ~ 2、按位与 0 0 = 0 0 1 = 0 1 0 = 0 1 1 = 1 例: 18 29 ? 18的补码:0001 0010 29的补码:0001 1101 -------------- 0001 0000 运算分量均为整型或字符型量。 1、按位求反 ~ 2、按位与 3、按位或 | 0|0=0 0|1=1 1|0=1 1|1=1 18的补码:0001 0010 29的补码:0001 1101 -------------- | 0001 1111 例: 18 | 29 ? 运算分量均为整型或字符型量。 1、按位求反 ~ 2、按位与 3、按位或 | 4、按位异或 ^ 0 ^ 0=0 0 ^ 1=1 1 ^ 0=1 1 ^ 1=0 若想使a= 0100 1101中 间四位取反,如何做? a: 0100 1101 ^ 0011 1100 ---------------------- 0111 0001 运算分量均为整型或字符型量。 1、按位求反 ~ 2、按位与 3、按位或 | 4、按位异或 ^ 5、左移 6、右移 设:a = 0001 1011 则: a 3 结果: 1101 1000 设:a = 0001 1011 则: a 3 结果: 0000 0011 1、 a=10; b=5; if (ab) if (ab) if(a | b) printf(“***\n”); printf(
原创力文档

文档评论(0)