亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? serial.c

?? ucosII操作系統移植源代碼(包括詳細的移植步驟和心得)。
?? C
?? 第 1 頁 / 共 2 頁
字號:
                return;
            }
            else if(ch=='\n'){PrintChar(10);PrintChar(13);}
            else if(ch=='\t'){
                for(j=0;j<TABNum;j++)
                    PrintChar(' ');
            }
            else PrintChar(ch);
        }
        ch=*fmt++;
        switch(ch){
            case 'c':
                PrintChar(*((char *)p));
                p=(char *)p+1;
                break;
            case 'd':
                PrintN(*((int *)p),10);
                p=(int *)p+1;
                break;
            case 'x':
                PrintN(*((int *)p),16);
                p=(int *)p+1;
                break;
            case 'o':
                PrintUN(*((int *)p),8);
                p=(int *)p+1;
                break;
            case 'b':
                PrintUN(*((int *)p),2);
                p=(int *)p+1;
                break;
            case 'l':
                ch=*fmt++;
                switch(ch){
                    case 'd':
                        PrintLN(*((long *)p),10);
                        p=(long *)p+1;
                        break;
                    case 'o':
                        PrintLUN(*((long *)p),8);
                        p=(long *)p+1;
                        break;
                    case 'u':
                        PrintLUN(*((unsigned long *)p),10);
                        p=(unsigned long *)p+1;
                        break;
                    case 'b':
                        PrintLUN(*((long *)p),2);
                        p=(long *)p+1;
                        break;
                    case 'x':
                        PrintLN(*((long *)p),16);
                        p=(long *)p+1;
                        break;
                    default:
//出臨界區
#pragma ASM
    POP IE;
#pragma ENDASM
                        return;
                }
                break;
            case 'f':
                DispF(*((float *)p));
                p=(float *)p+1;
                break;
            case 'u':
                PrintUN(*((unsigned int *)p),10);
                p=(unsigned int *)p+1;
                break;
            case 's':
                PrintStr(*((char **)p));
                p=(char **)p+1;
                break;
            case '%':
                PrintChar('%');
                p=(char *)p+1;
                break;
            default:
//出臨界區
#pragma ASM
    POP IE;
#pragma ENDASM
                return;
        }
    }
}

void PrintN(int n,int b) reentrant  //十進制顯示整形數
{
    if(b==16){PrintWord(n);return;}
	if(n<0){PrintChar('-');n=-n;}
	if(n/b)
	    PrintN(n/b,b);
	PrintChar(n%b+'0');
}

void PrintUN(unsigned int n,unsigned int b) reentrant  //十進制顯示無符號整形數
{
    if(b==16){PrintWord(n);return;}
	if(n/b)
	    PrintUN(n/b,b);
	PrintChar(n%b+'0');
}


void PrintLN(long n,long b) reentrant  //十進制顯示長整形數
{
    if(b==16){PrintLong(n);return;}
	if(n<0){PrintChar('-');n=-n;}
	if(n/b)
	    PrintLN(n/b,b);
	PrintChar(n%b+'0');
}

void PrintLUN(unsigned long n,unsigned long b) reentrant  //十進制顯示無符號長整形數
{
    if(b==16){PrintLong(n);return;}
	if(n/b)
	    PrintLUN(n/b,b);
	PrintChar(n%b+'0');
}

//============================================================================================
//KEIL C51的float類型采用IEEE-754標準存儲,占4字節。
//    S E E E E E E E E E (1) M M M M M M M M M M M M M M M M M M M M M M M
//  S    1bit    正負標志位0=正;1=負
//  E    8bit    二進制階碼=(EEEEEEEE)-127
//  M   23bit    24bit尾數,只存儲23位,最高位固定為1。此方法用最較少的位數實現了較高的有效數,提高了精度。
//
//  尾數為24bit,最高可表達的整數值為2^24-1=16777215,也就是說,小于等于16777215的整數可以被精確
//顯示。這決定了十進制浮點數的有效位數為7位,10^7<16777215<10^8,10的7次方以內的數小于16777215,
//可以精確表示。使用科學記數法時,整數部分占1位,所以小數部分最大占7-1=6位,即最大有6位精度。
//  長整形數和浮點數都占4字節,但表示范圍差別很大。浮點數的范圍為+-1.175494E-38到+-3.402823E+38,
//無符號長整形數范圍為0到4294967295。顯示浮點數要用到長整形數保存數據,可他們范圍差這么多,怎么辦呢?
//  仔細觀察十進制浮點數的顯示,有一個尾數和一個階碼,由上面論證可知32位浮點數最大有效數字為7位十進制
//數,超出此范圍的數字有截斷誤差,不必理會,因此,使浮點數尾數能夠放在長整形數里保存。階碼為-38到38,
//一個char型變量就可以保存。
//  綜上所述,以10^7的最大跨度為窗口(小于10^7也可以,如:10,100...10000等,但決不能大于它,那樣會
//超出精度范圍),定位浮點數的量級,然后取出7位尾數的整數值,再調整階碼,就可以精確顯示此浮點數。
//  量級尺度如下:
//    (-38)-(-35)-(-28)-(-21)-(-14)-(-7)-(0)-(7)-(14)-(21)-(28)-(35)-(38)
//  請嚴格按照KEIL手冊給出的浮點數范圍顯示,因為數值空間沒有完全使用,有些值用于錯誤指示和表示正負無窮。
//小于1.175494E-38的數仍可以顯示一些,但最好不用,以免出錯。我采用直接判斷的方法,剔除此種情況。
//  在計算機里結合律不成立,(a*b)*c!=a*(b*c),原則是先讓計算結果值動態范圍小的兩個數運算,請注意程序里
//的寫法。
//  注:(1E38/b)*1E6不要寫成1E44/b,因為無法在32位浮點數里保存1E44,切記!
//  計算機使用二進制數計算,能有效利用電子器件高速開關的特性,而人習慣于十進制數表示,二進制和十進制
//沒有方便的方法轉換,只能通過大量計算實現,浮點數的十進制科學記數法顯示尤其需要大量的運算,可見,顯示
//一個浮點數要經過若干次浮點運算,沒有必要就不要顯示,花在顯示上的時間比計算的耗時都要多得多。
//============================================================================================
void DispF(float f) reentrant  //用科學記數法顯示浮點數,在float全范圍內精確顯示,超出范圍給出提示。
{                              //+-1.175494E-38到+-3.402823E+38
    float tf,b;
    unsigned long w;
    char i,j;
    if(f<0){
        PrintChar('-');
        f=-1.0*f;
    }
    if(f<1.175494E-38){
        yyprintf("?.??????");//太小了,超出了最小范圍。
        return;
    }
    if(f>1E35){  //f>10^35
        tf=f/1E35;
        b=1000.0;
        for(i=0,j=38;i<4;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f/(1E29*b);  //1E35*b/1E6
        PrintW(w,j);
    }
    else if(f>1E28){  //10^28<f<=10^35
        tf=f/1E28;
        b=1E7;
        for(i=0,j=35;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f/(1E22*b);  //1E28*b/1E6
        PrintW(w,j);
    }
    else if(f>1E21){  //10^21<f<=10^28
        tf=f/1E21;
        b=1E7;
        for(i=0,j=28;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f/(1E15*b);  //1E21*b/1E6
        PrintW(w,j);
    }
    else if(f>1E14){  //10^14<f<=10^21
        tf=f/1E14;
        b=1E7;
        for(i=0,j=21;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f/(1E8*b);  //1E14*b/1E6
        PrintW(w,j);
    }
    else if(f>1E7){  //10^7<f<=10^14
        tf=f/1E7;
        b=1E7;
        for(i=0,j=14;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f/(10.0*b);  //1E28*b/1E6
        PrintW(w,j);
    }
    else if(f>1){  //1<f<=10^7
        tf=f;
        b=1E7;
        for(i=0,j=7;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f/(1E-6*b);  //1E0*b/1E6
        PrintW(w,j);
    }
    else if(f>1E-7){  //10^-7<f<=1
        tf=f*1E7;
        b=1E7;
        for(i=0,j=0;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f*(1E13/b);  //(1E7/b)*1E6
        PrintW(w,j);
    }
    else if(f>1E-14){  //10^-14<f<=10^-7
        tf=f*1E14;
        b=1E7;
        for(i=0,j=-7;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f*(1E20/b);  //(1E14/b)*1E6
        PrintW(w,j);
    }
    else if(f>1E-21){  //10^-21<f<=10^-14
        tf=f*1E21;
        b=1E7;
        for(i=0,j=-14;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f*(1E27/b);  //(1E21/b)*1E6
        PrintW(w,j);
    }
    else if(f>1E-28){  //10^-28<f<=10^-21
        tf=f*1E28;
        b=1E7;
        for(i=0,j=-21;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f*(1E34/b);  //(1E28/b)*1E6
        PrintW(w,j);
    }
    else if(f>1E-35){  //10^-35<f<=10^-28
        tf=f*1E35;
        b=1E7;
        for(i=0,j=-28;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f*(1E35/b)*1E6;  //(1E35/b)*1E6
        PrintW(w,j);
    }
    else{  //f<=10^-35
        tf=f*1E38;
        b=1000.0;
        for(i=0,j=-35;i<4;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f*(1E38/b)*1E6;  //(1E38/b)*1E6
        PrintW(w,j);
    }
}

void PrintW(unsigned long w,char j) reentrant  //科學記數法,顯示十進制尾數和階碼。
{
    char i;
    unsigned long tw,b;
    
    //if(j<-38){yyprintf("?.??????");return;}//太小了,超出最小表數范圍。
    //if(j>38){yyprintf("*.******");return;}此算法不會出現j>38的情況。
    
    tw=w/1000000;
    PrintChar(tw+'0');PrintChar('.');
    w=w-tw*1000000;
    b=100000;
    for(i=0;i<6;i++){
        tw=w/b;
        PrintChar(tw+'0');
        w=w-tw*b;
        b=b/10;
    }
    yyprintf("E%d",(int)j);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91小视频在线| 久久女同性恋中文字幕| 日韩欧美一级精品久久| 欧美激情在线看| 91精品国产入口在线| 日韩欧美综合在线| 亚洲精品v日韩精品| 国产一区二区久久| 欧美猛男男办公室激情| 亚洲精品中文字幕在线观看| 国内久久婷婷综合| 欧美日韩精品二区第二页| 亚洲视频在线一区二区| 国产精品一品视频| 日韩午夜精品视频| 日韩影视精彩在线| 欧美午夜一区二区三区免费大片| 中文一区二区完整视频在线观看| 日本欧美大码aⅴ在线播放| 91在线丨porny丨国产| 久久久久9999亚洲精品| 久久99久久久欧美国产| 337p亚洲精品色噜噜噜| 香蕉成人伊视频在线观看| 色婷婷激情久久| 亚洲视频一区二区免费在线观看| 国产一区二区三区不卡在线观看| 91精品黄色片免费大全| 天天影视色香欲综合网老头| 91久久国产最好的精华液| 亚洲码国产岛国毛片在线| 国产jizzjizz一区二区| 久久精品一区二区三区av| 国产精品影视网| 日本一区二区综合亚洲| 国产成人av电影| 欧美激情综合网| av不卡一区二区三区| 中文字幕av不卡| 色综合天天综合狠狠| 亚洲精品一二三四区| 欧美亚洲国产一区二区三区va | 亚洲激情成人在线| 91捆绑美女网站| 亚洲小说欧美激情另类| 欧美性极品少妇| 日本女人一区二区三区| 精品对白一区国产伦| 国产成人8x视频一区二区| 国产精品久久久久天堂| 欧美亚洲自拍偷拍| 麻豆91精品视频| 久久久久久久久97黄色工厂| voyeur盗摄精品| 午夜天堂影视香蕉久久| 欧美大片一区二区| eeuss鲁片一区二区三区在线观看| 自拍视频在线观看一区二区| 欧美日韩成人激情| 韩国精品一区二区| 亚洲男人电影天堂| 欧美成人video| 成人免费观看视频| 亚洲v中文字幕| 久久精品夜色噜噜亚洲a∨| 91视频观看免费| 美国毛片一区二区三区| 国产精品久久国产精麻豆99网站 | 91在线观看高清| 日韩国产在线一| 国产精品狼人久久影院观看方式| 欧美在线影院一区二区| 国产成人亚洲综合a∨婷婷图片| 亚洲人成网站色在线观看| 日韩女优毛片在线| 欧美中文字幕一区二区三区亚洲| 久久99精品国产91久久来源| 综合久久国产九一剧情麻豆| 日韩午夜小视频| 在线观看一区二区精品视频| 国内精品伊人久久久久av影院| 亚洲嫩草精品久久| 久久精品日产第一区二区三区高清版 | 欧美视频中文字幕| 成人av先锋影音| 精彩视频一区二区| 五月婷婷色综合| 亚洲人成亚洲人成在线观看图片 | 91在线云播放| 国产**成人网毛片九色 | 自拍偷拍亚洲激情| 国产亚洲精品超碰| 日韩欧美国产一二三区| 欧美男男青年gay1069videost| 波波电影院一区二区三区| 国产做a爰片久久毛片| 五月天网站亚洲| 一区二区三区产品免费精品久久75| 久久久久久日产精品| 日韩欧美中文一区| 欧美久久久久久久久久| 欧美性三三影院| 一本久久a久久免费精品不卡| 国产mv日韩mv欧美| 国产suv一区二区三区88区| 久久91精品久久久久久秒播| 日本强好片久久久久久aaa| 亚洲一区二区三区在线| 亚洲一区精品在线| 亚洲国产精品一区二区www在线| 亚洲免费观看视频| 亚洲蜜臀av乱码久久精品| 亚洲日本成人在线观看| 亚洲免费电影在线| 一区二区三区鲁丝不卡| 亚洲一二三区不卡| 亚洲亚洲人成综合网络| 亚洲成人福利片| 日韩制服丝袜av| 久久超碰97中文字幕| 国产麻豆精品在线观看| 高清shemale亚洲人妖| 国产电影一区二区三区| 成人午夜伦理影院| 91在线无精精品入口| 日本韩国欧美一区二区三区| 欧美三级在线播放| 91 com成人网| 精品久久人人做人人爽| 久久久久99精品一区| 自拍偷拍亚洲激情| 水蜜桃久久夜色精品一区的特点| 奇米精品一区二区三区四区| 极品少妇xxxx精品少妇| 成人免费视频caoporn| 91久久香蕉国产日韩欧美9色| 欧美日韩亚洲综合一区二区三区| 国产精品网曝门| 日韩视频国产视频| 欧美激情综合网| 亚洲成a人v欧美综合天堂下载 | 欧美成人女星排名| 国产无遮挡一区二区三区毛片日本| 国产精品久久久久aaaa樱花| 午夜国产不卡在线观看视频| 国产一区二区看久久| 一本一本大道香蕉久在线精品| 欧美剧情片在线观看| 国产欧美日韩亚州综合| 亚洲一区二区精品视频| 韩国精品主播一区二区在线观看| 99久久99久久免费精品蜜臀| 欧美丰满少妇xxxbbb| 国产精品入口麻豆原神| 午夜精品久久久久久不卡8050| 国产一区二区三区在线观看免费| 色综合久久久久久久| 精品免费国产二区三区| 自拍视频在线观看一区二区| 久久激五月天综合精品| 色哟哟日韩精品| 久久综合久久99| 天天综合天天综合色| 成人毛片在线观看| 日韩视频免费观看高清完整版 | 激情五月激情综合网| 91在线丨porny丨国产| 在线不卡欧美精品一区二区三区| 国产精品18久久久久久久久| 欧美在线综合视频| 国产精品国产a| 精品在线播放免费| 91麻豆精品国产自产在线观看一区| 欧美国产精品专区| 免费的国产精品| 欧美亚洲动漫另类| 国产精品国产自产拍高清av王其 | 亚洲视频网在线直播| 国内精品久久久久影院一蜜桃| 欧美性一区二区| 自拍偷拍国产亚洲| 国产超碰在线一区| 精品国产91乱码一区二区三区| 天堂精品中文字幕在线| 在线日韩一区二区| 亚洲曰韩产成在线| 色播五月激情综合网| 亚洲欧洲精品一区二区三区| 国产精品18久久久久久久网站| 日韩精品影音先锋| 蜜臀av性久久久久蜜臀av麻豆| 欧美在线啊v一区| 亚洲免费观看在线视频| 91丨porny丨最新| 亚洲图片欧美激情| 色综合中文字幕国产 | 国产馆精品极品| 国产视频一区不卡| 国产成人在线影院| 国产日本一区二区|