int a b;// a为输出 b为输入0-9
char temp_1, i ;// 中间运算值
temp= b%10; //对10取余,查看个位数字 举例 b=7=1+2+4
for(i=0;i<4;i++){
temp_1=b%2 ; //对2取余.处理b中大于等于0小于等于1的部分,例 7%2=1,也就是转换出来的最低位是1,我们需要把它放到最低位
temp_1<<3; //经过上一次运算,中间值是0000 0001,向左位移3位得到0000 1000
a>>1;//把上面的0000 1000中的1填到a的第5位,这里把a右位移1,腾出位置,放数值
a=a|temp_1; //a与这个值进行或运算,a的第5位和temp_1的值相同
b=b/2;// 把b的值缩小2倍,这样可以把大于等于1小于2的部分,缩小到大于等于0小于等于1,例,7=1+2+4,7/2=0+1+2(由于取整,第一个1/2的运算变成0了)
//2^4=16>10,反复运行4次,可以把10以内的数字转化成8421码
}
|