请高手赐教16进制如何简单快速的相乘?

如果A=50H,B=0A0H,那么MUL AB?1、很明显如果全部转化10进制,A=80,B=160,那么A*B=12800,然后再转化为16制为3200H2、另外采用移位的话,A=1010000,B=1010000,那么A*B=10100000000000+101000000000=11001000000000=3200H3、?????显而易见,对于一个复杂的16进制数,以上两种方法都相当的麻烦,那么有没有一个直观快速的算法,像十进制乘法那样,即使再复杂的数也轻松搞定????

1.二进制数、十六进制数转换为十进制数(按权求和)
  二进制数、十六进制数转换为十进制数的规律是相同的。把二进制数(或十六进制数)按位权形式展开多项式和的形式,求其最后的和,就是其对应的十进制数——简称“按权求和”.
  例如:把(1001.01)2转换为十进制数。
  解:(1001.01)2
  =1*8+4*0+2*0+1*1+0*(1/2)+1*(1/4)
  =8+0+0+1+0+0.25
  =9.25
  把(38A.11)16转换为十进制数
  解:(38A.11)16
  =3×16的2次方+8×16的1次方+10×的0次方+1×16的-1次方+1×16的-2次方
  =768+128+10+0.0625+0.0039
  =906.0664
  2.十进制数转换为二进制数,十六进制数(除2/16取余法)
  整数转换.一个十进制整数转换为二进制整数通常采用除二取余法,即用2连续除十进制数,直到商为0,逆序排列余数即可得到――简称除二取余法.
  例:将25转换为二进制数
  解:25÷2=12 余数1
  12÷2=6 余数0
  6÷2=3 余数0
  3÷2=1 余数1
  1÷2=0 余数1
  所以25=(11001)2
  同理,把十进制数转换为十六进制数时,将基数2转换成16就可以了.
  例:将25转换为十六进制数
  解:25÷16=1 余数9
  1÷16=0 余数1
  所以25=(19)16
  3.二进制数与十六进制数之间的转换
  由于4位二进制数恰好有16个组合状态,即1位十六进制数与4位二进制数是一一对应的.所以,十六进制数与二进制数的转换是十分简单的.
  (1)十六进制数转换成二进制数,只要将每一位十六进制数用对应的4位二进制数替代即可――简称位分四位.
  例:将(4AF8B)16转换为二进制数.
  解: 4 A F 8 B
  0100 1010 1111 1000 1011
  所以(4AF8B)16=(1001010111110001011)2
  (2)二进制数转换为十六进制数,分别向左,向右每四位一组,依次写出每组4位二进制数所对应的十六进制数――简称四位合一位.
  例:将二进制数(111010110)2转换为十六进制数.
  解: 0001 1101 0110
  1 D 6
  所以(111010110)2=(1D6)16
  转换时注意最后一组不足4位时必须加0补齐4位
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-23
小磊子,哥教你吧!用C语言写个程序撒!!!