2012年计算机二级C语言位运算考点归纳

牛课网 考试宝典 更新时间:2024-05-15 09:23:04

浙江湖州中考语文试卷 小儿厌食的中医辨证论治 佳木斯历届高考状元

第15章 位运算考点归纳

15.1 位运算的含义及应用

1.位的概念

大多数计算机系统的内存储器是由众多的存储单元构成的。在微机中,每个存储单元是1个字节,它由8位二进制数构成,可以表示28=256种信息,各位的编号从0~7,最左边的位(第7位)是最高位,最右边的位(第0位)是最低位。由于二进制本身的特点,各位上的数字不是1,就是0。

本章中的位就是指上述提到的二进制位,本章中的位运算就是指对这些二进制的位进行逻辑运算、移位运算等操作。

2.数的编码

数在计算机中是以二进制表示的,但是它并不是简单地以它本身的数值的二进制形式来直接表示,而要进行一定的编码,以方便计算机进行处理。常用的编码有原码、反码、补码三种。

3.真值与原码

我们将一个十进制数的二进制表示称为这个十进制数的真值,它代表了这个十进制数本身的数值。下表列出了一些数的真值。

真值举例

数 二进制表示 真值(16位)

0

1?

7 0

1?

111 0000000000000000

0000000000000001?

0000000000000111 ?

15? ?

1111? ?

0000000000001111?

255?

4095?

65535 11111111?

111111111111?

1111111111111111 0000000011111111?

0000111111111111?

1111111111111111

用真值表示的数只能是正数,对于负数,要用“一”号标明,例如:

-7的真值为-0000000000000111 -65535的真值为-1111111111111111

这势必造成用计算机表示数时的不便,故引入了原码表示法。

在原码表示法中,最高位代表符号位,用“1”表示负数,“0”表示正数;余下的数位用来表示真值的绝对值。

数字零存在着两种表示方法:+0与-0。

4.反码

若采用反码表示,则对应的原码应按照以下方法进行转换:

(1)如果真值为正,则它的反码与原码相同;

(2)如果真值为负,则反码的符号位为1,其余各位就是对原码取反(即原码的1变为0,原码的0变为1)。

5.补码

(1)为什么要引入补码

补码具有许多独特的优点:首先它可以变减法运算为加法运算,使得计算时步骤统一,速度提高;其次,在这种系统下的“0”只有惟一的一种表示方法,这就是现代的计算机系统中大多采用补码的原因。

(2)补码的规定

①正数的原码、补码、反码均相同;

②计算负数的补码时,先置符号位为1,再对剩余原码的位数逐位取反,最后对整个数加1。

在微机上以8位二进制数为一字节的存储单元中采用补码系统,它可以存放的最小整数为-128,最大整数为+127。若采用两个字节来表示一个整数,则可表示的最小整数为-32768,最大整数为+32767。

15.2 简单的位运算

C语言提供了位(bit)运算的功能,这使它像汇编语言一样用来编写系统程序。位运算符共有六种;

位运算符

位运算符 含义

& 位与

︳ 位或

∧ 位异或

~ 位取反

<< 位左移

>> 位右移 [page]
 

本节介绍前四种运算,即位的逻辑运算。

1.按位与运算

①概念

“按位与”运算符“&”是双目运算符,其功能是将参与运算两数的各对应二进位相与。只能对应的两个二进位均为1时,结果位才为1,否则为0。

②“按位与”与运算的特殊用途

ⅰ.清零

如果想将一个存储单元清零,即使其全部二进位为0,可按这样的方法计算:

找一个数,它的补码形式中各位的值符合如下条件:原来的数中为1的位,新数中相应位为0(注意,并不要求原数为0的位上,新数相应位为1,新数相应位可以是0或1);对二者进行&运算。

ⅱ.取一个数中某些字节

对于一个整数a(占2个字节),如要想得到其中的低字节,只需将a与特定的一个数按位与即可。

③要想将一个数的某一位保留下来,可将该数与一个特定的数进行&处理。

2.按位或运算

“按位或”运算符“︳”是双目运算符,其功能是将参与运算两数的各对应的二进位相或。只要对应的两个二进位有一个为1时,结果位就为1。参与运算的整数均以补码出现。

3.按位异或运算

①概念

“按位异或”运算符“∧”是双目运算符,其功能是将参与运算两数的各对应位相异或,当两对应的二进位相异时,结果为1,否则为0。参与运算整数仍以补码出现。

②“异或”运算的特殊应用

ⅰ.使特定位翻转

ⅱ.与0相“异或”,保留原值。

ⅲ.交换两个值。

4.“取反”运算

“~”是一个一元运算符,即它的运算量只有一个,用来对一个二进制数按位取反,即将0变1,1变0。比如说,~025就是对八进制数25(即二进制数000000000010101)按位求反。

15.3 移位运算

1.移位运算符

移位运算是对操作数以二进制位为单位进行左移或右移。

移位操作

运算符 名 称 例 子 运算功能

>> 右移位 b>>3 b右移3位

<< 左移位 c<<2 c左移2位

2.左移运算

左移运算符“<<”是双目运算符,其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。例如;

a<<4

就把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

3.右移运算

右移运算符“>>”是双目运算符,其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。例如:

a=15,a>>2

表示把000001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0;而为负数时,符号位为1,最高位是补0或1取决于编译系统的规定。Turbo C 规定补1。

右移运算相当于将运算对象除2.

15.4 位赋值运算

位赋值运算符。

位赋值运算符

运算符 名 称 例 子 等价于

&= 位与赋值 a&=b a=2&b

︳= 位或赋值 a|=b a=a|b

∧= 位异或赋值 a∧=b a=a∧b

>>= 右移赋值 a>>b a=a>>b

<<= 左移赋值 a<<=b a=a<

位赋值运算的过程为:

(1)先对两个操作数进行位操作;

(2)然后把结果赋予第一个操作数,因此第一个操作数必须是变量。

位赋值运算与算术赋值运算相似,它们都统称复合赋值运算。

考试宝典安装说明

宝典适用于手机、电脑、平板,您可安装客户端或在浏览器使用。

电脑版

手机版

网页版

考试宝典咨询
服务热线

TEL:029-88699698