C语言提供了 六种位运算符

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
00111000 56 38 8
00111001 57 39 9
00111010 583A:
00111011 59 3B ;
00111100 603C<
00111101 61 3D =
00111110 62 3E >
00111111 633F?
01000000 64 40 @
01000001 6541 A
41 21 33 ! 141 6197 a
42 22 34 " 142 62 98 b
43 23 35 # 143 6399 c
44 24 36 $ 144 64 100 d
45 25 37 % 145 65 101 e
46 26 38 & 146 66102 f
4 4 4 eot 104 44 68 D
5 5 5 enq 105 45 69 E
6 6 6 ack 106 4670 F
7 7 7 bel 107 4771 G
10 8 8 bs 110 48 72 H
11 9 9 ht 111 49 73 I
120a10 nl 1124a74 J
13 0b 11 vt 113 4b 75 K
01110100 116 74 t
01110101 117 75 u
01110110 118 76 v
01110111 119 77 w
01111000 120 78 x
01111001 121 79 y
01111010 1227Az
01111011 123 7B {1 125 7D }
00011001 25 19 EM (end of medium)介质中断
00011010 261ASUB (substitute)替补
00011011 27 1B ESC (escape)溢出
00011100 281CFS (file separator)文件分割符
00011101 29 1D GS (group separator)分组符
321a26 sub 1325a90 Z
33 1b 27 esc 133 5b 91 [
341c28 fs 1345c92 \
35 1d 29 gs 135 5d 93 ]
36 1e 30 re 136 5e 94 ^
371f31 us 1375f95 _
40 20 32 sp 140 60 96 '
00100100 36 24 $
00100101 37 25 %
00100110 38 26 &
00100111 39 27 '
00101000 40 28 (
00101001 41 29 )
00101010 422A*
00101011 43 2B +
00101100 442C,
00101101 45 2D -
00101110 46 2E .
00101111 472F/
00110000 48 30 0
续表00110001 49 31 1
00110010 50 32 2
00110011 51 33 3
00110100 52 34 4
00110101 53 35 5
00110110 54 36 6
00110111 55 37 7
01100000 96 60 `
01100001 9761 a
01100010 98 62 b
续表01100011 9963 c
01100100 100 64 d
01100101 101 65 e
01100110 10266 f
01100111 10367 g
01101000 104 68 h
01101001 105 69 i
一、位运算符C语言提供了六种位运算符:
&按位与
|按位或
^按位异或
~取反
<<左移
>>右移
1.按位与运算按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下:00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。
00010001 17 11 DC1 (device control 1)设备控制1
00010010 18 12 DC2 (device control 2)设备控制2
00010011 19 13 DC3 (device control 3)设备控制3
00010100 20 14 DC4 (device control 4)设备控制4
00010101 21 15 NAK (negative acknowledge)拒绝接收
00010110 22 16 SYN (synchronous idle)同步空闲
00010111 23 17 ETB (end of trans. block)传输块结束
00011000 24 18 CAN (cancel)取消
00000010 2 02 STX (start of text)正文开始
00000011 3 03 ETX (end of text)正文结束
00000100 4 04 EOT (end of transmission)传输结束
00000101 5 05 ENQ (enquiry)请求
00000110 6 06 ACK (acknowledge)收到通知
main(){
unsigned a,b;
printf("input a number: ");
scanf("%d",&a);
b=a>>5;
b=b&15;
printf("a=%d\tb=%d\n",a,b);
}
请再看一例!
main(){
char a='a',b='b';
int p,c,d;
p=a;
p=(p<<8)|b;
01111110 126 7E ~
01111111 1277FDEL (delete)删除
八进制十六进制十进制字符八进制十六进制十进制字符
0 0 0 nul 100 40 64 @
1 1 1 soh 101 4165 A
2 2 2 stx 102 42 66 B
3 3 3 etx 103 4367 C
d=p&0xff;
c=(p&0xff00)>>8;
printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);
}
标准ASCII表
Bin Dec Hex缩写/字符解释
00000000 0 00 NUL(null)空字符
00000001 1 01 SOH(start of headling)标题开始
01101010 1066Aj
01101011 107 6B k
01101100 1086Cl
01101101 109 6D m
01101110 110 6E n
01101111 1116Fo
01110000 112 70 p
01110001 113 71 q
01110010 114 72 r
01110011 115 73 s
例如:9|5可写算式如下:00001001|00000101
00001101 (十进制为13)可见9|5=13
main(){
int a=9,b=5,c;
c=a|b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
3.按位异或运算按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下:00001001^00000101 00001100 (十进制为12)
按位与运算通常用来对某些位清0或保留某些位。例如把a的高八位清0,保留低八位,可作a&255运算( 255的二进制数为0000000011111111)。
main(){
int a=9,b=5,c;
c=a&b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
2.按位或运算按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
高位丢弃,低位补0。例如:a<<4指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。6.右移运算右移运算符“>>”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
例如:设a=15,a>>2表示把000001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。Turbo C和很多系统规定为补1。
23 13 19 dc3 123 53 83 S
24 14 20 dc4 124 54 84 T
25 15 21 nak 125 55 85 U
26 16 22 syn 126 56 86 V
27 17 23 etb 127 57 87 W
30 18 24 can 130 58 88 X
31 19 25 em 131 59 89 Y
01001100 764CL
01001101 77 4D M
01001110 78 4E N
01001111 794FO
01010000 80 50 P
01010001 81 51 Q
01010010 82 52 R
01010011 83 53 S
01010100 84 54 T
01010101 85 55 U
main(){
int a=9;
a=a^15;
printf("a=%d\n",a);
}
4.求反运算求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。例如~9的运算为:~(0000000000001001)结果为:1111111111110110
5.左移运算左移运算符“<<”是双目运算符。其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,
00011110 30 1E RS (record separator)记录分离符
00011111 311FUS (unit separator)单元分隔符
00100000 32 20 (space)空格
00100001 33 21 !
00100010 34 22 "
00100011 35 23 #
01010110 86 56 V
01010111 87 57 W
01011000 88 58 X
01011001 89 59 Y
01011010 905AZ
01011011 91 5B [
01011100 925C\
01011101 93 5D ]
01011110 94 5E ^
01011111 955F_
00000111 7 07 BEL (bell)响铃
00001000 8 08 BS (backspace)退格
00001001 9 09 HT (horizontal tab)水平制表符
00001010 100ALF (NL line feed, new line)换行键
00001011 11 0B VT (vertical tab)垂直制表符
00001100 120CFF (NP form feed, new page)换页键
00001101 13 0D CR (carriage return)回车键
00001110 14 0E SO (shift out)不用切换
00001111 150FSI (shift in)启用切换
00010000 16 10 DLE (data link escape)数据链路转义
140c12 ff 1144c76 L
15 0d 13 er 115 4d77 M
16 0e 14 so 116 4e 78 N
170f15 si 1174f79 O
20 10 16 dle 120 50 80 P
21 11 17 dc1 121 51 81 Q
22 12 18 dc2 122 52 82 R
01000010 66 42 B
01000011 6743 C
01000100 68 44 D
01000101 69 45 E
01000110 7046 F
01000111 7147 G
01001000 72 48 H
01001001 73 49 I
01001010 744AJ
01001011 75 4B K
相关文档
最新文档