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碼
}
|