由于标题原因这里计划开始进入二进制数的运算里来。用这节的时间精通二进制所以比其他的教程会更精简一些。首先是概念世界上没有进制的说法只是人类为了计数方便创造了各种进制。还是那句话同样的数量的东西怎么数都是那些客观事实谁都无能为。而我们这里谈的是怎么数准备好笔和纸哦。
1.注意英语名10进制Decimal二进制Binary十六进制H。以后用打头字母代表进制.D1234就是十进制表示1234B1234就是用2进制表示1234.
2.几进制就是几为权重常用转换在下边一通百通多做练习
例
a.10进制到十进制变换
012,........9
10个数的权重(不懂这个词看例子)从右到左以此为110100......
D1793=3*10^0+9*10^1+7*10^2+1*10^3=1+90+700+1000=D1793
b. 2进制到十进制变换
B10110=0*2^0+1*2^1+...=D22
c.10进制到2进制变换
D84 84/2=42...0
42/2=21...0
21/2=10...1
10/2=5.....0
5/2=2.........1
2/2=1.........0
1/2=0........1
结果就是D84=B1010100
d.16进制
就是123...,9,A,B,C,D,E,F(就是A是10B是11...)。这里用字母的原因就是10开始就是用两位表达的了而进制定义是n进制就是用n-1个一位数来表达不这样的话10和二进制会发生混淆。
2^4=16,所以4位二进制表达一位十六进制。
例十六进制到二进制
H2ED就是 十六进制 2ED = B 0010 1110 11012是0010E也就是14是1110D是1101
二进制到十六进制
B1111010 = H7A从右边读起1010就是A111是7
十进制到16进制
D333 333/16 = 20...13
20/16 =1... 4
1/16 = 0......1
结果是H14D
3. 计算机常用单位转换
1byte = 8bits
1nibble = 4bits
1word由处理器架构决定
1024byte=1KB
1024bite=1Kb
1KB=8*1Kb
4.LSBMSBLSB就是最没用的位可以被随时扔掉而MSB就是最有用的位要保留。
例只看amsb代表2^5,而lsb是0.在计算机四舍五入的时候当然不能把msb扔掉做加减法的时候可以。
5.二进制加法和十进制一样看例子就明白
那么试着算一下1101+0101=答案是10010多了一位就是说溢出了
6.正负号问题两套系统
例
D5=101我们拓延一位
D5=0101再把MSB换成1即可
D-5=B110这就是所谓的“符号系统”
加法问题也就是减法
利用2的“补位系统”为了计算D-7=
首先D7=0111然后
计算~D7=1000再+1即可求出补位系统里的表达式 D-7=1001
然后按着5做加法即可。
例1D-2+D1=B1110+B0001=B1111=D-1
例2D-7+D7=B1001+B0111=B10000由于msb溢出扔掉结果为B0000。
可以发现补位系统里0是正数1111...1+1=100000...0,msb溢出把1扔掉
7。范围问题
例 若有4bit空位
补位系统-8到7
符号系统0到15
所以补位系统由于没有-0所以有N bits的时候范围是[2^(N-1), 2^(N-1- 1].而最大的负数就是B10000...0=-2^(N-1)由于虽然是负数但是由于msb溢出被扔掉变成正数所以被称为 奇异数。
例若只有有4bit空位在补码系统中计算D4+D5=B0100+B0101=B1001=-7结果溢出4bit但是用5bit就能得到正确结果。
符号拓延被定义为进行如下操作例如把4bit空位中1101放在7bit空位中则结果为111 1101
总结见上图是一个4bit空位三个系统的范围的列举。Unsigned范围从0到15补码系统从-8到7符号系统从-7到7.注意符号系统的两个01000和0000分别是-0和0.要熟练掌握以上7条就足以以不变应万变了。