a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 193|回复: 3

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

[复制链接]
发表于 2012-7-31 21:48:08 | 显示全部楼层 |阅读模式
 15.1 位运算的含义及应用   1.位的概念 8 I+ @" y8 ~4 Y3 J# w( W
  大多数计算机系统的内存储器是由众多的存储单元构成的。在微机中,每个存储单元是1个字节,它由8位二进制数构成,可以表示28=256种信息,各位的编号从0~7,最左边的位(第7位)是最高位,最右边的位(第0位)是最低位。由于二进制本身的特点,各位上的数字不是1,就是0。
1 N; Z$ H$ x  i" ]0 y2 Z  本章中的位就是指上述提到的二进制位,本章中的位运算就是指对这些二进制的位进行逻辑运算、移位运算等操作。
6 J/ h( J( I% W$ S& Y% Y- U  2.数的编码 & L* ~$ k) @6 Y" \) g6 V7 x) ?
  数在计算机中是以二进制表示的,但是它并不是简单地以它本身的数值的二进制形式来直接表示,而要进行一定的编码,以方便计算机进行处理。常用的编码有原码、反码、补码三种。 8 f/ L7 G4 E$ D5 y5 G
  3.真值与原码
" ?. l9 z/ K0 B. b. l/ i. N8 K  我们将一个十进制数的二进制表示称为这个十进制数的真值,它代表了这个十进制数本身的数值。下表列出了一些数的真值。
3 \, t9 ~6 m2 Z7 v) P  `) I  真值举例 0 E7 x! V+ W& J7 g9 f8 Z' M+ K0 G
  数 二进制表示 真值(16位)
' m0 k- z* T1 A) I9 Q  0 ' U, F: ~8 j6 C- [; h- A
  1
; ]( y! O4 y' k% q! j! M7 X  7 0 # r5 g% u: @& ?3 g1 j2 y
  1 : p5 v. C% d6 h/ q+ D/ m- V: \. P
  111 0000000000000000
: V) o# ^& T8 i* G  0000000000000001 5 S( q9 q9 S3 O; ]
  0000000000000111 
9 H- W/ f# s+ v, v4 s  15 
. r" R* H1 G4 W- X2 O  1111 
% _$ E1 O' c* j  T0 s7 Q+ X. j2 I  0000000000001111 4 P9 w* ~, b( G( k& A& ~
  255 $ ?, i/ b) a, y+ U* u
  4095
7 K& H3 e& Z# d$ g2 R. L/ q: K  65535 11111111 & ]; H1 e2 v" G$ J* Z, `, b
  111111111111
/ a8 J; N' p1 ?9 O& a  1111111111111111 0000000011111111 & b* J( Q% f+ y* Z
  0000111111111111 ' E! _$ e( A0 Q3 _# E- i
  1111111111111111 # f/ i( Y6 c' W! U, p# w
  用真值表示的数只能是正数,对于负数,要用“一”号标明,例如: * s. Z8 N+ M  [: A: V0 M6 L: A: ~
  -7的真值为-0000000000000111 -65535的真值为-1111111111111111
: j5 U# B; x6 V  这势必造成用计算机表示数时的不便,故引入了原码表示法。 4 \+ |( ~( V9 R0 Y
  在原码表示法中,最高位代表符号位,用“1”表示负数,“0”表示正数;余下的数位用来表示真值的绝对值。
! Y) K5 V5 Q5 |5 H4 t% h( }  {9 ]- N& |, `4 @8 {/ m& w5 y, ?) y; y
  数字零存在着两种表示方法:+0与-0。
回复

使用道具 举报

 楼主| 发表于 2012-7-31 21:48:09 | 显示全部楼层

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

</p>  4.反码 " f, @8 a: J& }- g( c
  若采用反码表示,则对应的原码应按照以下方法进行转换: 8 D' i" n/ w2 T+ y
  (1)如果真值为正,则它的反码与原码相同;
/ C! d* Z/ i* Z3 F  D7 C/ D4 A6 o- _  (2)如果真值为负,则反码的符号位为1,其余各位就是对原码取反(即原码的1变为0,原码的0变为1)。
2 `# v0 N3 Q6 y' z9 F: V0 Q  5.补码
# M0 \  w; \' O! Z# D  (1)为什么要引入补码 ( ]3 _6 g* u" q# x7 y6 ]
  补码具有许多独特的优点:首先它可以变减法运算为加法运算,使得计算时步骤统一,速度提高;其次,在这种系统下的“0”只有惟一的一种表示方法,这就是现代的计算机系统中大多采用补码的原因。 8 z( C) E; @4 @7 C
  (2)补码的规定
% I" T/ \( M( C0 v& Y" _+ F: a  ①正数的原码、补码、反码均相同; % P, [/ R1 ~, W8 P' s! F
  ②计算负数的补码时,先置符号位为1,再对剩余原码的位数逐位取反,最后对整个数加1。
  n: D, X6 ?+ @  在微机上以8位二进制数为一字节的存储单元中采用补码系统,它可以存放的最小整数为-128,最大整数为+127。若采用两个字节来表示一个整数,则可表示的最小整数为-32768,最大整数为+32767。
! B5 O5 y- d9 _1 ]# g5 g  15.2 简单的位运算
; Y/ f! w! c/ J: h; X* U7 b  C语言提供了位(bit)运算的功能,这使它像汇编语言一样用来编写系统程序。位运算符共有六种;
& t2 h8 @+ y% H5 T) c2 z  位运算符 : H$ [) L+ }; E( h* ?5 J! z( R
  位运算符 含义
  w' s% x6 _; s7 L+ L8 a1 R  k% \! W  & 位与
) D3 F; g: U9 e: _/ d: {0 G  ︳ 位或 5 @, i* u: {% N  ^; K
  ∧ 位异或 $ n) s5 t# y+ N6 ~2 d
  ~ 位取反
2 n/ K. I+ E0 W- ~4 S5 q* n  W  > 位右移
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 21:48:10 | 显示全部楼层

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

本节介绍前四种运算,即位的逻辑运算。   1.按位与运算 ' O+ H$ R( |! U9 D
  ①概念
* [- O" L# W4 w* l  “按位与”运算符“&”是双目运算符,其功能是将参与运算两数的各对应二进位相与。只能对应的两个二进位均为1时,结果位才为1,否则为0。
* L9 w9 _  @) z) v  ②“按位与”与运算的特殊用途
+ o/ L! a, O/ `; S  ⅰ.清零 ) [6 V) v7 ^0 b
  如果想将一个存储单元清零,即使其全部二进位为0,可按这样的方法计算:
: c3 @& }6 k6 t$ v  找一个数,它的补码形式中各位的值符合如下条件:原来的数中为1的位,新数中相应位为0(注意,并不要求原数为0的位上,新数相应位为1,新数相应位可以是0或1);对二者进行&运算。 1 K# C  q. o- ]5 l) b0 }9 R7 \8 N  @+ J
  ⅱ.取一个数中某些字节 7 N) k8 J! S) }# v: V8 @4 S) O
  对于一个整数a(占2个字节),如要想得到其中的低字节,只需将a与特定的一个数按位与即可。 & G. p) F, w% Z3 O  O3 T
  ③要想将一个数的某一位保留下来,可将该数与一个特定的数进行&处理。
% f" f& W4 p. ~7 R2 c3 E7 `: S  2.按位或运算
4 [% }; S; e8 N3 v# S% d7 E# I7 S  “按位或”运算符“︳”是双目运算符,其功能是将参与运算两数的各对应的二进位相或。只要对应的两个二进位有一个为1时,结果位就为1。参与运算的整数均以补码出现。 * K% X  ?/ [5 U: a" U* J  c3 l
  3.按位异或运算 0 f  L+ u' {8 x7 ?
  ①概念
/ N+ a5 c" g& O+ f  “按位异或”运算符“∧”是双目运算符,其功能是将参与运算两数的各对应位相异或,当两对应的二进位相异时,结果为1,否则为0。参与运算整数仍以补码出现。
- }  T) x$ V3 c# G2 e$ z  ②“异或”运算的特殊应用 8 t$ U! \" N8 r
  ⅰ.使特定位翻转 6 b3 G/ I+ ?% v* ^
  ⅱ.与0相“异或”,保留原值。
1 _8 Z0 B5 g/ m* w/ Q6 s7 @  ⅲ.交换两个值。 3 l0 n3 D* j2 L) j: d$ L/ Y9 J
  4.“取反”运算
- p" Z7 @4 b% C0 ]$ f  g
$ x9 `6 w2 T& F7 |- M2 s3 G  “~”是一个一元运算符,即它的运算量只有一个,用来对一个二进制数按位取反,即将0变1,1变0。比如说,~025就是对八进制数25(即二进制数000000000010101)按位求反。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 21:48:11 | 显示全部楼层

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

</p>  15.3 移位运算 ; l& x1 j, u3 T( }8 K" M
  1.移位运算符
1 w: L, S% z* d  移位运算是对操作数以二进制位为单位进行左移或右移。
- Y% I* E. s) n1 |( b' [  移位操作
+ W( @2 w7 y3 g& D* g  运算符 名 称 例 子 运算功能 - U5 }7 R0 x2 T- I+ Y
  >> 右移位 b>>3 b右移3位 2 ]6 ~8 P, K* }' K& T+ k
  >b a=a>>b
" l7 a4 s/ e5 ?* B+ |' }8 W3 O% o) ^  B- A
  
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-2 13:44 , Processed in 0.294717 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表