C语言40 第12章位运算 课堂教学1学时 课堂教学累计34学时
C语言40 第12章 位运算 课堂教学1学时 课堂教学累计34学时
C语言40 位运算指二进制位的运算 ·位运算符和位运算 运算符含义运算符含义 &按位与 取反 按位或 左移 按位异或 右移
C语言40 • 位运算符和位运算 运算符 含义 运算符 含义 & 按位与 ~ 取反 | 按位或 > 右移 位运算指二进制位的运算
C语言40 说明: 1.位运算符中~为单目运算符 2.运算量只能是整型或字符型的 数据,不能为实型数据
C语言40 • 说明: 1. 位运算符中~为单目运算符 2. 运算量只能是整型或字符型的 数据,不能为实型数据.
C语言40 按位与运算符(&) 运算规则 080=0:081=0:180=0:181=1 例:382=? 3882=? 3=00000011 (&) 00000010 00000010 结果
C语言40 按位与运算符 (&) • 运算规则 0&0=0; 0&1=0; 1&0=0; 1&1=1 例:3&2=? 问:3&&2=? 3= 00000011 (&) 2= 00000010 00000010 结果
C语言40 按位与的特殊用途 1清零 原来的数为1的位,新数中相应位为0 00101011 11011101 810010100800000000 00000000 00000000
C语言40 按位与的特殊用途 1.清零 原来的数为1的位,新数中相应位为0 00101011 11011101 & 10010100 & 00000000 00000000 00000000
C语言40 2取一个数的指定位 例:026254=(0010110010101100)2 分别取其低字节和高字节数据 0010110010101100 80000000011111111 0000000010101100 关键数字0377,0177400 3保留任意位
C语言40 2.取一个数的指定位 例:026254=(0010110010101100)2 分别取其低字节和高字节数据 0010110010101100 &0000000011111111 0000000010101100 • 关键数字0377 , 0177400 3.保留任意位
C语言40 按位或运算 ·运算规贝 00=0;01=1;10=1;11=1 思考 060017=077060017=?
C语言40 按位或运算 (|) • 运算规则 0|0=0; 0|1=1; 1|0=1; 1|1=1 思考: 060|017=077 060||017=?
C语言40 “异或”运算(∧) 运算规则:参加运算的两个二进制数的相 应位值不同则取1,反之相同则取0 ·例:使特定位翻转(低4位翻转) 0172A017=0165 01111010 ∧00001111 01110101
C语言40 “异或”运算 (∧) • 运算规则:参加运算的两个二进制数的相 应位值不同则取1,反之相同则取0 • 例:使特定位翻转(低4位翻转) 0172 ∧017=0165 01111010 ∧ 00001111 01110101
C语言40 取反运算 ·运算规则: 0变1,1变0 例~025=0177752 思考:!025=?
C语言40 取反运算 (~) • 运算规则: 0变1,1变0 • 例 ~025=0177752 • 思考:!025=?
C语言40 左移运算符(0000111100 溢出 补0 结果:a=60 左移一位相当于该数乘以2
C语言40 左移运算符 (<<) • 将一个二进制数全部左移若干位 • 右补0 • 高位左移后溢出,舍弃不起作用 • 例:a=15,左移2位 a=a<<2 00001111 ->00 00111100 溢出 补0 结果:a=60 • 左移一位相当于该数乘以2