|
- 約160個(gè)周期,頂尖高手的才70多個(gè)周期。(最后附)
- /* unsigned char temp;
- D1=D2=D3=D4=D5=0;
- temp=((unsigned char *)&value)[0];
- if(temp&0x80){D1+=3;D2+=2;D3+=7;D4+=6;D5+=8;}
- if(temp&0x40){D1+=1;D2+=6;D3+=3;D4+=8;D5+=4;}
- if(temp&0x20){D2+=8;D3+=1;D4+=9;D5+=2;}
- if(temp&0x10){D2+=4;D3+=0;D4+=9;D5+=6;}
- if(temp&0x08){D2+=2;D3+=0;D4+=4;D5+=8;}
- if(temp&0x04){D2+=1;D3+=0;D4+=2;D5+=4;}
- if(temp&0x02){D3+=5;D4+=1;D5+=2;}
- if(temp&0x01){D3+=2;D4+=5;D5+=6;}
- temp=((unsigned char *)&value)[1];
- if(temp&0x80){D3+=1;D4+=2;D5+=8;}
- if(temp&0x40){D4+=6;D5+=4;}
- if(temp&0x20){D4+=3;D5+=2;}
- if(temp&0x10){D4+=1;D5+=6;}
- if(temp&0x08){D5+=8;}
- if(temp&0x04){D5+=4;}
- if(temp&0x02){D5+=2;}
- if(temp&0x01){D5+=1;}
-
- /* while(D5>=10){D5-=10;D4++;}
- while(D4>=10){D4-=10;D3++;}
- while(D3>=10){D3-=10;D2++;}
- while(D2>=10){D2-=10;D1++;}
- if(D5>=10){D4+=D5/10;D5=D5%10;}
- if(D4>=10){D3+=D4/10;D4=D4%10;}
- if(D3>=10){D2+=D3/10;D3=D3%10;}
- if(D2>=10){D1+=D2/10;D2=D2%10;}
-
- while(value>=1000){D1++;value=value-1000;}
- while(value>=100){D2++;value=value-100;}
- while(value>=10){D3++;value=value-10;}
- D4=value;*/
-
-
- 這個(gè)才70多周期
- void show_value(unsigned int x)
- {
- unsigned char i,j,k; //臨時(shí)變量
- k = x;
- x = x >> 2;
- i = x >> 8;
- j = (i + i + i) << 1;
- if (i > 41)
- {
- i++;
- j+=6;
- }
- j = j + x;
- if ((unsigned char)x > j )
- {
- i++;
- j+=6;
- }
- if (j > 249)
- {
- i++;
- j+=6;
- }
- D1 = i / 10; //分離得到的萬(10000)位
- D2 = B; //分離得到的千(1000)位
- D3 = j / 25; //分離得到的百(100)位
- D4 = (B<<2 | k&3) / 10; //分離得到的十(10)位
- D5 = B; //分離得到的個(gè)(1)位
- }
復(fù)制代碼
|
|