进制转换,补码,反码,原码
让我猜猜考题系列(1)进制转换与位运算(内容为不太熟悉的部分)
- 进制的标识方法
二进制 ( )2 B
八进制 ( ) O
十进制 ( ) D
十六进制( ) H
- 二进制的运算规则
加法: 0+0=0 0+1=1 1+0=1 1+1=10(逢二进位)
Eg:(10111.011)2+(11.01)2 =(11010.101)2
- 常用数的对照表
十进制 二进制 十六进制
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
进制的转换(略)
- 十六进制
- 数码组成:0~9,A~F
- 逢十六进一
- 十进制和十六进制的转换(略)
- 十六进制和二进制的转换
十六进制转换为二进制
(37C.4B)16=(1101111100.01001011)2
3~~0011 7~~0111 C~~1100 4~~0100 B~~1011
二进制转换为十六进制
(10 1010 1101.0101 01)2=(2AD.54)16
10~~2 1010~~A 1101~~D 101~~5 01~~4
6.八进制的转换类比于十六进制
7.补码,原码,反码
目的:机器数采用的是补码的形式
正数:以+10为例
正数的原码,补码,反码三者相同
原码,补码,反码均为(00000000 00001010)2
负数:以-10为例
负数的原码:最高位是符号位,负数为1,正数为0
那么,-10的原码(10000000 00001010)2
负数的反码: 最高位是符号位,负数为1,正数为0,其余的对于其正数按位取反
那么,-10的反码(11111111 11110101)2
负数的补码:取反加1
那么-10的补码:(11111111 11110110)2
8.字符ASCII码
(1)ASCII表包含128个常用字符
(2)特殊字符的ASCII码对照表
字符 十进制 十六进制
1~9 49~57 31H~39H
A~Z 65~90 41H~5AH
a~z 97~122 61H~7AH
9.位运算
& 与 两个位都是1的时候结果才为1
| 或 两个位都是0的时候结果才是0
^ 亦或 两个位相同结果为0,不同为1
~ 取反 相同是1,不同是0
<< 左移 高位丢弃,整体左移,低位补0
>> 右移 全部右移,对于无符号数,高位补0,对于有符号数,依照编译器确定
- 位运算可能考察的题型
- 给定两个数,先换算成二进制,再进行位运算
- 根据题目要求来确定运算方式
Eg:有一个短整型变量a,只想保留低字节,应该进行的运算(a=a&0377)
Eg:将短整型变量a的低8位全部变成1,高8位保持原状,应该进行的运算(a=a|0377)