回想以前学汇编的时候不知道为什么总是过一段时间就忘记进制转换的方法
大概是学得不知所以然吧
最近回顾一下这些知识,并思考了一下原理
二进制数1001B=1*2^0 + 0*2^1 + 0*2^2 + 1*2^3=1 + 8 =9
原理:
一个十进制数632可以表示成
=600 + 30 + 2
=6*10^2 + 3*10^1 + 2*10^0
=632
同理一个二进制数11011可以表示成
10000+ 1000+ 000 + 10 +1
=1*2^4+ 1*2^3+ 0*2^2 + 1*2^1 +1*2^0
=16 + 8 + 0 + 2 +1
=27
十进制转二进制
A=a(2^0)+b(2^1)+c(2^2)+d(2^3)+e(2^4) (后面的和不正是化十进制的过程吗)
现在假设该数未化为二进制,除以基数2得
A/2=a(2^0)/2+b(2^1)/2+c(2^2)/2+d(2^3)/2+e(2^4)/2
这时候由于a(2^0)/2这条式不可能被整除,而其他项式又肯定是能被整除的。所以a(2^0)必须被余下来,也就是a必须被余下来
(因为a和a(2^0)总是相等的),那么这样就可以从余数a窥知第一个二进制位了
商得:
b(2^0)+c(2^1)+d(2^2)+e(2^3),再除以除以基数2余下了b,以此类推。
当这个数不能再被2除时,先余掉的a位数在原数低,而后来的余数数位高,所以要把所有的余数反过来写。正好是edcba
大概是学得不知所以然吧
最近回顾一下这些知识,并思考了一下原理
二进制转十进制
例子:二进制数1001B=1*2^0 + 0*2^1 + 0*2^2 + 1*2^3=1 + 8 =9
原理:
一个十进制数632可以表示成
=600 + 30 + 2
=6*10^2 + 3*10^1 + 2*10^0
=632
同理一个二进制数11011可以表示成
10000+ 1000+ 000 + 10 +1
=1*2^4+ 1*2^3+ 0*2^2 + 1*2^1 +1*2^0
=16 + 8 + 0 + 2 +1
=27
十进制转二进制
A=a(2^0)+b(2^1)+c(2^2)+d(2^3)+e(2^4) (后面的和不正是化十进制的过程吗)
现在假设该数未化为二进制,除以基数2得
A/2=a(2^0)/2+b(2^1)/2+c(2^2)/2+d(2^3)/2+e(2^4)/2
这时候由于a(2^0)/2这条式不可能被整除,而其他项式又肯定是能被整除的。所以a(2^0)必须被余下来,也就是a必须被余下来
(因为a和a(2^0)总是相等的),那么这样就可以从余数a窥知第一个二进制位了
商得:
b(2^0)+c(2^1)+d(2^2)+e(2^3),再除以除以基数2余下了b,以此类推。
当这个数不能再被2除时,先余掉的a位数在原数低,而后来的余数数位高,所以要把所有的余数反过来写。正好是edcba