C21第12章 位运算
- 格式:ppt
- 大小:439.50 KB
- 文档页数:21
位运算(转)12 位运算 C语⾔是为描述系统设计的,因此它应该具有汇编语⾔所以完成的⼀些功能。
C语⾔既有⾼级语⾔的特点,⼜具有低级语⾔的功能。
因⽽具有⼴泛的⽤途和很强的⽣命⼒。
12.1 位运算符和位运算运算符 含义& 按位与| 按位或^ 按位异或~ 取反<< 左移>> 右移说明:(1)位运算符中除 ~ 外,均为⼆⽬运算符,即要求出侧各有⼀个运算量。
(2)运算早只能是整型或字符型的数据,不能为实型数据。
12.1.1 按位与运算符 & 参加运算的两个数制,按⼆进制进⾏与运算。
如果两个相应的⼆进位数为1,刚该位的结果为 1 否则为 0 即: 0 & 0 = 0;0 & 1 = 0;1 & 0 = 0;1& 1 = 1例如:3 & 8 并不等于8,应该是按位与3 = 000000115 = 00000101 &00000001 因此 3 & 5 的值得 1,如果参加 & 是负数(-3 & -5),则以补码形式表⽰为⼆进制数。
然后按位进⾏与运算。
按拉与有⼀些特殊的⽤途: (1)清零。
如果想将⼀个单元清零,即使其全部⼆进位为 0,只要找⼀个⼆进制数,其中各个位符合以下条件:原来数中为 1 的位,新数中相应位为 0。
然后使⼆者进⾏ & 运算,即可以达到清零⽬的。
(2)取⼀个数中某些指定位。
如有⼀个整数 a (2个字节)想要其中的低字节。
只需将 a 与(337)。
按位与即可。
(3)要想将哪⼀个保留下来,就与⼀个数进⾏ & 运算,此数在该位位1,如有⼀个数 01010100,想把其中左⾯第3,4,5,7,8可以这样运算:0101010000111011 &0001000012.1.2 按位或运算符 | 两个相应的⼆进位中只要有⼀个为 1,该位的结果就为 1。
0|0=0; 0|1=1; 1|0=1; 1|1=1; 按位或运算常⽤来对⼀个数据的某些位定值为1,如 a 是⼀个整数(16位)有表达式 a & 0377,则低 8 位全置为 1。
c语言中的位运算位运算是计算机中常用的一种运算方式,它直接对二进制数的每一位进行操作。
在C语言中,位运算有多种操作符,包括位与(&)、位或(|)、位异或(^)、位取反(~)等。
本文将介绍位运算的基本概念和常见应用。
一、位与运算(&)位与运算是对两个操作数的每一位进行与操作,只有在两个操作数的对应位都为1时,结果的对应位才为1,否则为0。
位与运算常用于屏蔽某些位、清零某些位的操作。
例如,假设有一个8位的二进制数11101110,我们想将第4位和第5位清零,可以使用位与运算符来实现:```unsigned char num = 0xEE; // 二进制数11101110unsigned char mask = 0xCF; // 二进制数11001111 unsigned char result = num & mask; // 二进制数11001110```通过将原数与一个掩码进行位与运算,可以将指定位置零,得到结果11001110。
二、位或运算(|)位或运算是对两个操作数的每一位进行或操作,只要两个操作数的对应位中有一个为1,结果的对应位就为1,否则为0。
位或运算常用于设置某些位、将某些位置1的操作。
例如,假设有一个8位的二进制数00110011,我们想将第3位和第4位置1,可以使用位或运算符来实现:```unsigned char num = 0x33; // 二进制数00110011unsigned char mask = 0x0C; // 二进制数00001100 unsigned char result = num | mask; // 二进制数00111111```通过将原数与一个掩码进行位或运算,可以将指定位置1,得到结果00111111。
三、位异或运算(^)位异或运算是对两个操作数的每一位进行异或操作,当两个操作数的对应位相同时,结果的对应位为0,否则为1。
位异或运算常用于数据加密、数据校验等操作。