假如有一个八位二进制数255,我把他转255的十进制数
0 1111 1111 原数
1 0000 0001 ;左移一次
2 0000 0011 ; 左移二次
3 0000 0111 ;左移三次,检查低四位+3>7?
3.1 0000 1010 ;大于7,加3进行调整
4 0001 0101 ;左移四次, 检查低四位+3>7?
4.1 0001 1000 ;大于7,加3进行调整
5 0011 0001 ;左移五次
6 0110 0011 ;左移六次,检查高四位+3>7?
6.1 1001 0011 ;大于7,加3进行调整
7 1 0010 0111 ;左移七次,检查低四位+3>7?
7.1 1 0010 1010 ;大于7,加3进行调整
8 10 0101 0101 ;左移八次(得到BCD码255)
一次反推可以用移位发进行BCD转二进制的算法 BCD码右移一位后判断,高四位,和第四位是否大于7,如果大于7则减3,然后再移位,即可转化位所要求的二进制码
1 10 0101 0101 转换为二进制
1.1 10 0101 0101 ;右移一位的 01 0010 1010 二进制数为1000 0000
1.1.1 01 0010 1010 ;判断高四位,低四位是否大于7
1.1.2 低四位大于7 则间3 01 0010 0111
1.2 01 0010 0111 ;右移一位得 00 1001 0011 二进制数位 1100 0000
1.21 判断高,低四位 是否大于7 时则减3 得 00 0110 0011
1.3 00 0110 0011 ;右移一位得 00 0011 0001 二进制数位 1110 0000
1.3.1 判断高低四位
1.4 00 0011 0001;右移一位得 00 0001 1000 二进制数位 1111 0000
1.4.1 判断高低四位 的00 0001 0101
1.5 00 0001 0011 ;右移一位得 00 0000 1010 二进制数位 1111 1000
1.5.1 判断高低四位 的00 0000 0111
1.6 00 0000 0111;右移一位得 00 0000 0011 二进制数位 1111 1100
1.7 00 0000 0011 ;右移一位 00 0000 0001 二进制数位 1111 1110
1.8 00 0000 0001; 右移一位 00 0000 0000 二进制数位 1111 1111
|