#
剛才接到一個(gè)消息,我多天努力畫出來(lái)的PCB中,把數(shù)碼管放倒了,做出來(lái)是一個(gè)頭朝下的數(shù)字。
也怪我,每次都是拿著那一半的儀器,沒(méi)注意它的數(shù)碼管是在底端,結(jié)果畫板的時(shí)候以為數(shù)碼管是在頭部,~~~~~~~~~~~
這會(huì)兒心里很亂,不知道還會(huì)有什么錯(cuò)誤,他還說(shuō)過(guò)孔比較難做,唉,我也不知道為什么過(guò)孔會(huì)比較難做呢?也沒(méi)具體問(wèn)他
硬件工程師,這算是我就職以后的第一個(gè)項(xiàng)目,呵呵,就鬧出了這樣的錯(cuò)誤,吃一塹長(zhǎng)一智吧,做硬件,再多細(xì)心都不過(guò)分的!
希望,錯(cuò)誤是成長(zhǎng)的代價(jià)!
摘要:本文分析討論了高速PCB板上由于高頻信號(hào)的干擾和走線寬度的減小而產(chǎn)生的電源噪聲和 壓降,并提出了高速PCB的電源模型,采用電源總線網(wǎng)絡(luò)布線,選取合適的濾波電容,模擬數(shù)字地 分開(kāi)等幾個(gè)簡(jiǎn)單有效的方法來(lái)解決高速PCB板的噪聲和壓降問(wèn)題。
0 引言
隨著集成電路工藝和集成度的不斷提高,集成電路的工作電壓越來(lái)越低,速度越來(lái)越快。進(jìn)入新世紀(jì)后,CPU和網(wǎng)絡(luò)都邁入了GHZ的時(shí)代,這對(duì)于PCB板的設(shè)計(jì)提出了更高的要求。本文正是基于這種背景下,對(duì)高速PCB設(shè)計(jì)中最重要的環(huán)節(jié)之一——電源的合理布局布線進(jìn)行分析和探討。
1 電源模型分析
通常,在進(jìn)行理論上的分析和計(jì)算時(shí),都是把電源進(jìn)行理想化,即電源無(wú)內(nèi)阻,也無(wú)寄生阻抗。如果用一個(gè)3.3V的電壓源對(duì)PCB上的元件供電,那么無(wú)論距離電源的遠(yuǎn)近,各個(gè)元件都應(yīng)工作在3.3V,且沒(méi)有噪聲。然而在實(shí)際的設(shè)計(jì)工作中,由于PCB上的Ic和輸入輸出的信號(hào)都工作在高頻下,電場(chǎng)和磁場(chǎng)的相互轉(zhuǎn)化,必不可免的給電源引入了噪聲,如圖1、圖2所示。同時(shí)由于PCB板上的走線非常的細(xì),又產(chǎn)生了由于線路阻抗引起的壓降,使遠(yuǎn)離電壓源的器件工作電壓小于電源電壓。因而高速PCB的電源布線存在兩個(gè)關(guān)鍵的問(wèn)題:電源噪聲和壓降。
圖1 理想電源信號(hào)模型 圖2 實(shí)際電源信號(hào)模型
2 電源線的合理布局
設(shè)計(jì)高速PCB板的關(guān)鍵之一就是要盡可能的減小由于線路阻抗引起的壓降和高頻電磁場(chǎng)轉(zhuǎn)換而引入的各種噪聲。通常用兩種方法來(lái)解決上述問(wèn)題。一是電源總線技術(shù)(POWER BUS),另一種方法就是采用一個(gè)單獨(dú)的電源層進(jìn)行供電。后者在很大程度上緩解了壓降和噪聲的問(wèn)題,但考慮到多層PCB的工藝復(fù)雜,昂貴的費(fèi)用和較長(zhǎng)的制作周期,一般設(shè)計(jì)者們更喜歡采用前者,因而有必要對(duì)電源總線的合理布線進(jìn)行分析討論。
如圖3所示,采用了電源總線技術(shù),各個(gè)元器件懸掛在電源總線上,所以又稱之為懸掛式總線,電源 總線的寬度通常比普通的信號(hào)線要寬,采用總線技術(shù)后,雖然可以減小壓降和和噪聲的問(wèn)題,但它們?nèi)匀淮嬖诘摹?br>
圖3 電源總線 圖4 改進(jìn)型電源總線
首先來(lái)看壓降問(wèn)題,假設(shè)電源電壓為3.3V,0A,AB,BC,CD,BE,AF各段導(dǎo)線的電阻為0.05Ω,PCB板上的每個(gè)元器件的扇出或吸入電流為200ma,并作兩個(gè)理想假定:
1.不考慮由于A,B,C處電源線地突然拐角而產(chǎn)生的電壓電流突變;
2.不考慮邊界元件(1,4,9,12)由于電磁場(chǎng)地相互轉(zhuǎn)換而引起的邊界效應(yīng)。
則導(dǎo)線OA中的電流為2.6A,導(dǎo)線.AB中的電流為1.6A,導(dǎo)線BC和CD中的電流為0.8A,最后元件9上的電壓為:
3.3-2.6×0.05-1.6×0.05-0.8×0.05=3.01V
由于線路的阻抗產(chǎn)生了0.29V的壓降,偏差幾乎達(dá)到10%,這對(duì)于一個(gè)3.3V的電壓來(lái)說(shuō)已經(jīng)是相當(dāng)大了,而且隨著IC朝低電壓方向的發(fā)展,已經(jīng)有很多工作在2.5V乃至更低的Ic,因此這樣大的壓降將是非常致命的。同時(shí),在這種電源總線下,噪聲也是一個(gè)很大的問(wèn)題,如圖3,每個(gè)器件產(chǎn)生的噪聲都將通過(guò)電源耦合到元件13中,這也就是說(shuō)器件13疊加了13個(gè)元件的噪聲,這將很容易引起器件13不能正常工作。由于這兩個(gè)問(wèn)題依然存在,因此對(duì)電源總線技術(shù)進(jìn)行了改進(jìn),如圖4所示,它被稱為電源總線網(wǎng)絡(luò)法,即讓電源總線相互交叉,而把對(duì)噪聲和壓降敏感的元件放在電源線網(wǎng)絡(luò)的交叉點(diǎn)上,使得每一個(gè)元件同時(shí)屬于幾個(gè)不同的回路,如圖4中的元件6,7就分別屬于四個(gè)不同的小回路。由于電流可以從網(wǎng)絡(luò)中的任何一條總線上進(jìn)來(lái)或出去,而且每一個(gè)網(wǎng)孔構(gòu)成了一個(gè)回路,這就不僅可以使網(wǎng)絡(luò)中每條總線上的電流趨于均衡,不會(huì)出現(xiàn)懸掛式總線上的各段總線電流大小不一致的問(wèn)題,因此就可以減小由于線路阻抗引起的壓降問(wèn)題。元件的電流由各網(wǎng)孔417/分擔(dān),每個(gè)網(wǎng)孔的電流為400mA。對(duì)于元件5,元件9和元件1的電壓都比它高,因而電流從元件1和9流向5,從5流出到6。在最壞情況下即
元件9和1的電流全部從一端流出進(jìn)入元件5,則元件5上的電壓為3.3-0.4×0.05=3.28V(仍假定各段導(dǎo)線電阻為0.05Ω),要比懸掛式總線高了許多。懸掛式電源總線和改進(jìn)型電源總線中元件1,5,9元件的電壓數(shù)據(jù)分別如表1和表2所示:
節(jié)點(diǎn)元件 |
電壓(V) |
1 |
3.13 |
5 |
3.05 |
9 |
3.01 |
表1 分布式電源總線電壓
節(jié)點(diǎn)元件 |
電壓(V) |
1 |
3.3 |
5 |
3.28 |
9 |
3.3 |
表2 改進(jìn)型電源總線電壓
從表中可以看到由于采用了改進(jìn)的電源總線技術(shù),元件1,5,9的電壓都得到了極大的提升。
同時(shí)對(duì)于各個(gè)元件產(chǎn)生的噪聲來(lái)說(shuō),由于干擾是高頻信號(hào),因而每個(gè)回路可以看成一個(gè)單匝線圈。根據(jù)法拉第電磁感應(yīng)定律ξ=dφ/dt,由于每個(gè)回路中的電流方向不一樣,因而產(chǎn)生的變化磁場(chǎng)(大小為穿過(guò)每個(gè)網(wǎng)孔的磁通φ)的方向也就不一致,因而感應(yīng)的電動(dòng)勢(shì)的方向也就不一致,這樣就可以起到相互抵消的作用,減小了由于噪聲干擾產(chǎn)生的尖鋒電壓或電流,保護(hù)了元件的正常工作。同時(shí)由于電源總線網(wǎng)絡(luò)是雜亂無(wú)章的,因而每個(gè)元器件產(chǎn)生的噪聲通過(guò)電壓平均的耦合到其它各個(gè)元器件上去,最終減小了遠(yuǎn)端器件的壓降和近端器件的噪聲問(wèn)題(相對(duì)電源而言)。改進(jìn)的電源網(wǎng)絡(luò)總線技術(shù)不僅對(duì)宏觀的PCB十分有效,對(duì)微觀的大規(guī)模集成電路中的電源的布線也具有一定的參考價(jià)值。
3 濾波電容的選取與放置
雖然采用了改進(jìn)的電源總線技術(shù)后可以在很大程度上減小噪聲的問(wèn)題,但它總是存在的,這就必然要求引入電容器進(jìn)行濾波。電容器的種類有很多,由于制造的材料和工藝的不同,各種電容器的濾波性能不盡相同。同時(shí)在高頻下,電容本身也會(huì)產(chǎn)生寄生的阻抗。如圖5,圖6所示。因而在高頻下,電容本身成了一個(gè)諧振電路fr=1/(2π√LC)。由于寄生阻抗的存在,當(dāng)電容器的工作頻率f>fr時(shí)電容呈現(xiàn)感性,f<fr時(shí),電容呈現(xiàn)容性,如圖7所示。因而在選擇濾波電容是要特別小心,要盡量使電容工作在容性狀態(tài),如果電容選取不當(dāng),使電容工作在感性狀態(tài),那么也就失去了濾波的作用。因此一定要選取電容值(C)大,串聯(lián)電阻(R)和串聯(lián)電感(L)小的電容器。由于制造材料的不同,各種電容的參數(shù)也不同,一般來(lái)說(shuō),電解電容和膽電容對(duì)低頻噪聲的濾波效果比較好,瓷片電容,獨(dú)石電容等對(duì)高頻噪聲的濾波效果比較好。在實(shí)際的PCB板的設(shè)計(jì)中,濾波常分為兩個(gè)部分,電源濾波和器件的濾波。對(duì)于電源,由于整個(gè)PCB板上的噪聲都加到了它的上面,其中不僅包含了低頻噪聲,也包含了大量的高頻噪聲。為了有效的濾除這些噪聲,通常是采用一個(gè)大電容(典型為>uF的電解電容或膽電容)和一個(gè)小電容(典
型為uF)并聯(lián)來(lái)進(jìn)行濾波,這樣可以極大的提高濾除的噪聲范圍,如圖8所示。對(duì)于器件濾波,隨著集成電路工藝的進(jìn)步,IC自己本身能較好的抑制低頻噪聲,而對(duì)高頻噪聲比較敏感,所以一般采用小電容(典型為pF)來(lái)進(jìn)行電源濾波。
圖5理想電容 圖6高頻下電容器實(shí)際電路
圖7 單個(gè)電容濾波 圖8 兩個(gè)電容并聯(lián)濾波
4 數(shù)字地和模擬地
隨著Ic集成度的提高,現(xiàn)在的IC一般都有好幾對(duì)電源和地,其中就有模擬地和電源地。地線實(shí)際上也是一條信號(hào)線,但它的特殊性在于它是電路的公共端,通常是指零電位點(diǎn)。但由于使用的導(dǎo)線和敷銅連線在高頻下都有寄生的電感,電容的存在,將當(dāng)其用作地線時(shí),導(dǎo)線本身的阻抗也會(huì)是電容產(chǎn)生公共耦合,從而使模擬地和數(shù)字地相互干擾。由于數(shù)字信號(hào)的0,1有一定的容差范圍,如0.7v以下為0,2.4V以上為1,所以數(shù)字信號(hào)上有幾百毫伏的噪聲一般是不會(huì)影響信號(hào)的正常判斷的。而模擬信號(hào)對(duì)噪聲十分敏感,如果一個(gè)幅度為2V的正弦信號(hào)上疊加了一個(gè)幾百毫伏的噪聲,再經(jīng)過(guò)多級(jí)放大器放大后,那么很有可能引起信號(hào)門限電平的誤判而使這個(gè)電路工作在錯(cuò)誤的狀態(tài)之下。所以從理論上來(lái)說(shuō)要將數(shù)字地和模擬地分開(kāi),以降低電源對(duì)噪聲的耦合作用。在實(shí)際的設(shè)計(jì)中,通常把電源通過(guò)兩個(gè)uH的電感引出分別作為模擬電壓和數(shù)字電壓,同時(shí)在電源的地端用一個(gè)零歐姆的電阻分別引出作為模擬地和數(shù)字地。
5結(jié)束語(yǔ)
在對(duì)高速PCB上的電源存在的兩個(gè)問(wèn)題——壓降和噪聲的產(chǎn)生原因進(jìn)行了分析,并就如何在高速PCB的實(shí)際設(shè)計(jì)中有效地解決這兩個(gè)問(wèn)題提出了一些方法,在實(shí)際的設(shè)計(jì)工作中當(dāng)然還有其它的解決方法,不一一例舉。總之,在設(shè)計(jì)高速PCB板時(shí),對(duì)電源布局布線的處理應(yīng)盡量遵循下面一些規(guī)則:
- 有條件的情況下,盡量采用單獨(dú)的電源層和地層進(jìn)行供電。采用電源網(wǎng)絡(luò)總線時(shí),網(wǎng)孔越多越好,形成許多嵌套的網(wǎng)孔,同時(shí)總線要盡量的寬,以達(dá)到均衡電流,降低噪聲的目的;
- 電源的走線不能中間細(xì)兩頭粗,以免在上面產(chǎn)生過(guò)大的壓降。走線不能突然拐彎,拐彎要采用大于90°的鈍角,最好采用圓弧形走線,電源的過(guò)孔要比普通的人一些。有條件的話,在過(guò)孔處加濾波電容;
- 對(duì)于那些特別容易產(chǎn)生噪聲的部分用地線包圍起來(lái),以免產(chǎn)生的噪聲耦合入電壓。
參考文獻(xiàn):
[1]錢振宇.產(chǎn)品的電磁兼容性設(shè)計(jì)(連載)[DB/OL].
[2]宋萬(wàn)杰.CPLD技術(shù)及其應(yīng)用[M].西安:西安電子科技大學(xué)出版社1997.
[3]王幸之.單片機(jī)系統(tǒng)抗干擾設(shè)計(jì)iM].北京:北京航空航天人學(xué)出版社2000.
整天不知道該做什么飯,尤其是他想回家吃飯時(shí),我連續(xù)三天晚上給他做的同樣的飯,他今天說(shuō)還那樣做,我回答是的,他的下一句話就是“你還沒(méi)做夠啊?”,呵呵,還好他不算是很挑剔的人,基本上屬于做什么飯就吃什么的人,遺憾的是我都已經(jīng)厭倦做同樣的菜了,自從這周天氣一降溫,就不想炒菜了,總是把白菜粉條再加些魚丸之類的東西一起燉了,然后加上饅頭就湊成一頓晚餐,唉,反正我晚上下班之后已經(jīng)餓得前胸貼肚皮了,飯做好之后很快就一掃而光,吃燉菜,估計(jì)也是我多年的愛(ài)好吧,算作湯也算作菜,就是不知道他長(zhǎng)時(shí)間吃會(huì)不會(huì)膩?
今天是周六,上午睡睡懶覺(jué)然后吃早餐逛菜場(chǎng),在之后和他一起去合家福購(gòu)物,很快就到了中午,午飯后和他一起看電影,不過(guò)我看了一半就睡著了,等我醒了已經(jīng)是下午五點(diǎn)了,于是又考慮吃晚飯,…晚上看翡翠鳳凰和喬家大院,這一天的時(shí)間就這樣過(guò)去了
我今天的思考是:我的時(shí)間都花在了一些瑣碎和娛樂(lè)上面,那隨著時(shí)間的流逝,我積累下來(lái)的估計(jì)只有衰老了
摘要: protel dxp
批量修改PCB上的字體大小
從原來(lái)的PCB文件中導(dǎo)出元件封裝
度量單位的改變
PCB中如何快速定位到某元件
PCB中修改單個(gè)元件的封裝
閱讀全文
自從上次從**辭職之后,玩了一個(gè)月,之后才開(kāi)始專心的找工作
經(jīng)過(guò)了幾次面試,要么被別人鄙視,要么把別人鄙視,然后再次被聯(lián)發(fā)科技(合肥)鄙視之后,大腦突然變得很冷靜了,或者是開(kāi)始為生活擔(dān)憂了,不能再這樣沉淪下去,認(rèn)認(rèn)真真的開(kāi)始考慮找工作
看來(lái)任何事情真是怕“認(rèn)真”二字,在我開(kāi)始擔(dān)心未來(lái)的時(shí)候,幾個(gè)看起來(lái)還可以的機(jī)會(huì)來(lái)了,參加了樂(lè)堂動(dòng)漫的筆試,感覺(jué)還可以,審閱的人也給予了充分的肯定,只是在討論機(jī)試時(shí)間的時(shí)候,我說(shuō)到了下周一和二都有面試,他做了記錄。然后我就離開(kāi)了,結(jié)果周一去的“天智”公司讓我很是生氣,面試的人先看了一下我的期望薪資一眼就問(wèn)我有沒(méi)有調(diào)整的可能,我說(shuō)不能,然后就隨便聊了幾句就走了,出了門我很是生氣,既然對(duì)我的期望薪資有異議,就不要通知我大老遠(yuǎn)的跑一趟了吧!
周二又去了我現(xiàn)在上班的公司,是一個(gè)新注冊(cè)的小公司,不過(guò)和老大挺聊得來(lái)的,他對(duì)我的薪資期望也給予了理解,中午在家吃飯的時(shí)候接到了他的電話,說(shuō)決定錄用我了,并且下午參加他們技術(shù)負(fù)責(zé)人開(kāi)的一個(gè)會(huì)。就這樣,我開(kāi)始上班了,又開(kāi)始上班了
周三的時(shí)候接到了樂(lè)堂動(dòng)漫的電話,hr的小妹妹先問(wèn)我找到工作了沒(méi),我當(dāng)時(shí)正在看原理圖,也不想跑去再面試然后再告訴人家不去上班,于是直接告訴回答說(shuō)找到了,她說(shuō)“那打擾了”,就這樣,和動(dòng)漫錯(cuò)過(guò)了,也許吧
上了一周的班了,這一周的工作都是畫PCB圖,總是會(huì)遇到這樣那樣的小問(wèn)題,也許很白癡吧,但是卻需要一個(gè)個(gè)的解決,總之一句話,自我學(xué)習(xí),拒絕眼高手低
今天中午他給我打電話,說(shuō)上次幫我推薦的一個(gè)部門又可能要通知我去筆試或者面試,唉,讓我很生感慨,我剛下定決心在這個(gè)公司里呆上一年好好充充電,已經(jīng)把我鄙視過(guò)兩回的聯(lián)發(fā)科技又讓我去面試,說(shuō)真的,心里都在嘀咕如果真是再去面試,我該以一個(gè)什么樣的心態(tài)對(duì)待呢
聯(lián)發(fā)科呀聯(lián)發(fā)科,我有機(jī)會(huì)的時(shí)候沒(méi)準(zhǔn)備好(應(yīng)該畢業(yè)),我準(zhǔn)備好的時(shí)候又沒(méi)機(jī)會(huì)了(它上次拒我的理由是“先辭職后找工作,職業(yè)不穩(wěn)定”,可能也有技術(shù)方面的原因吧),現(xiàn)在我已經(jīng)對(duì)你死心了,可是你不會(huì)又來(lái)耍我了吧......有時(shí)候難免會(huì)想,呆在合肥這樣的一個(gè)小城市里,可能除了聯(lián)發(fā)科就沒(méi)有其它讓我如此向往的地方了,那就離開(kāi)去上海深圳北京闖闖吧,可是另一個(gè)聲音卻告訴我,安分守己準(zhǔn)備結(jié)婚生子吧,哈哈,要一個(gè)安穩(wěn)的生活,還是選擇機(jī)遇與挑戰(zhàn)并存的道路呢?
而且,他已經(jīng)占據(jù)了hardware部門,我只能進(jìn)入嵌入式軟件方面的崗位,做軟件還是硬件,好像是一個(gè)相差很遠(yuǎn)的方向哦
。。。。。。。。。。。
這一周白天上班,晚上就在家看電視,彷佛進(jìn)入養(yǎng)老狀態(tài),或許是因?yàn)榍岸螘r(shí)間精神比較緊張,最近才放松下來(lái)吧,思索一下,不能這樣啊,想起我離開(kāi)哈爾濱時(shí)還對(duì)王哥說(shuō)若干年后我要開(kāi)著凌志車去看望他呢,生活啊,我不能還沒(méi)開(kāi)始奮斗,就已經(jīng)進(jìn)入收尾階段了啊
幸運(yùn)的是我今天看了張近東的“
情有獨(dú)鐘,迷情電子三五年”,很多年沒(méi)有的熱血沸騰的感覺(jué)又回來(lái)了,啊,上帝,我還沒(méi)有老,我還年輕,還有夢(mèng)想還會(huì)激動(dòng),所以,我決定寫下這篇日志,并好好規(guī)劃一下我的生活
1、按時(shí)上下班,這是最基本的原則
2、積極完成工作任務(wù),在本周內(nèi)把PCB完成,積極推進(jìn)對(duì)protel dxp 2004的熟練掌握程度,這是我的第一個(gè)自主完成的pcb,堅(jiān)定信念!
3、每天堅(jiān)持兩個(gè)小時(shí)的學(xué)習(xí)(晚7:20---9:20)
4、堅(jiān)持完成主婦的基本任務(wù),“一屋不掃,何以掃天下”啊,也許,抵抗懶惰就是在遠(yuǎn)離抑郁,我要“執(zhí)子之手,與子偕老”!
5、降低吃飯的胃口,擴(kuò)大掙錢的欲望
6、擴(kuò)大眼界,著手小處,若干年后,我還是.......
利用輾轉(zhuǎn)相除法求兩個(gè)自然數(shù)的最大公因數(shù) 程序如下:
//利用輾轉(zhuǎn)相除法求兩個(gè)自然數(shù)的最大公因數(shù)
int gcd(int a, int b)
{
int r;
while(b)
{
r = a%b;
a = b;
b = r;
}
return a;
}
相關(guān)理論如下:
「輾轉(zhuǎn)相除法」又叫做「歐幾里得算法」,是公元前 300 年左右的希臘數(shù)學(xué)家歐幾里得在他的著作《幾何原本》提出的。利用這個(gè)方法,可以較快地求出兩個(gè)自然數(shù)的最大公因數(shù),即 HCF 或叫做 gcd。所謂最大公因數(shù),是指幾個(gè)數(shù)的共有的因數(shù)之中最大的一個(gè),例如 8 和 12 的最大公因數(shù)是 4,記作 gcd(8,12)=4。
在介紹這個(gè)方法之前,先說(shuō)明整除性的一些特點(diǎn),注以下文的所有數(shù)都是正整數(shù),以后不再重覆.
我們可以這樣給出整除以的定義:
對(duì)於兩個(gè)自然數(shù) a 和 b,若存在正整數(shù) q,使得 a=bq,則 b 能整除 a,記作 b | a,我們叫 b 是 a 的因數(shù),而 a 是 b 的倍數(shù)。那麼如果 c | a,而且 c | b,則 c 是 a 和 b 的公因數(shù)。
由此,我們可以得出以下一些推論:
推論一:如果 a | b,若 k 是整數(shù),則 a | kb。因?yàn)橛?a | b 可知 ha=b,所以 (hk)a=kb,即 a | kb.
推論二:如果 a | b 以及 a | c,則 a | (b±c)。因?yàn)橛?a | b 以及 a | c,可知 ha=b,ka=c,二式相加,得 (h+k)a=b+c,即 a | (b+c).同樣把二式相減可得 a | (b-c)。
推論三:如果 a | b 以及 b | a,則 a=b。因?yàn)橛?a | b 以及 b | a,可知 ha=b,a=kb,因此 a=k(ha),hk=1,由於 h 和 k 都是正整數(shù),故 h=k=1,因此 a=b。
輾轉(zhuǎn)相除法是用來(lái)計(jì)算兩個(gè)數(shù)的最大公因數(shù),在數(shù)值很大時(shí)尤其有用而且應(yīng)用在電腦程式上也十分簡(jiǎn)單。其理論如下:
如果 q 和 r 是 m 除以 n 的商及余數(shù),即 m=nq+r,則 gcd(m,n)=gcd(n,r)。 證明是這樣的:
設(shè) a=gcd(m,n),b=gcd(n,r)
則由 a | m 及 a | n,可得 a | (m-nq)(由推論一及推論二得出的),即 a | r ,又 a | n,所以 a | b。
由 b | r 及 b | n,可得 b | (nq+r),即 b | m,又 b | n,所以b | a。
因?yàn)?a | b 并且 b | a,所以 a=b,即 gcd(m,n)=gcd(n,r)。
舉例計(jì)算 gcd(546, 429),由於 546=1(429)+117,429=3(117)+78,117=1(78)+39,78=2(39),因此
gcd(546, 429)
=gcd(429, 117)
=gcd(117, 78)
=gcd(78, 39)
=39
此處再添加一個(gè)程序例子,不過(guò)不是利用輾轉(zhuǎn)相除法
求最大公約數(shù)和最小公倍數(shù):
#include <iostream>
using namespace std;
int gec,lcm;
void process(int x,int y)
{
gcd=x<y?x:y;
lcm=x<y?y:x;
for(gcd=x<y?x:y;gcd>1;gcd--)if(x%gcd==0&&y%gcd==0)break;
for(lcm=x<y?x:y;lcm>1;lcm++)if(lcm%x==0&&lcm%y==0)break;
return;
}
printf的格式控制的完整格式:
% - 0 m.n l或h 格式字符
下面對(duì)組成格式說(shuō)明的各項(xiàng)加以說(shuō)明:
①%:表示格式說(shuō)明的起始符號(hào),不可缺少。
②-:有-表示左對(duì)齊輸出,如省略表示右對(duì)齊輸出。
③0:有0表示指定空位填0,如省略表示指定空位不填。
④m.n:m指域?qū)挘磳?duì)應(yīng)的輸出項(xiàng)在輸出設(shè)備上所占的字符數(shù)。N指精度。用于說(shuō)明輸出的實(shí)型數(shù)的小數(shù)位數(shù)。為指定n時(shí),隱含的精度為n=6位。
⑤l或h:l對(duì)整型指long型,對(duì)實(shí)型指double型。h用于將整型的格式字符修正為short型。
---------------------------------------
格式字符
格式字符用以指定輸出項(xiàng)的數(shù)據(jù)類型和輸出格式。
①d格式:用來(lái)輸出十進(jìn)制整數(shù)。有以下幾種用法:
%d:按整型數(shù)據(jù)的實(shí)際長(zhǎng)度輸出。
%md:m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于m,則按實(shí)際位數(shù)輸出。
%ld:輸出長(zhǎng)整型數(shù)據(jù)。
②o格式:以無(wú)符號(hào)八進(jìn)制形式輸出整數(shù)。對(duì)長(zhǎng)整型可以用"%lo"格式輸出。同樣也可以指定字段寬度用“%mo”格式輸出。
例:
main()
{ int a = -1;
printf("%d, %o", a, a);
}
運(yùn)行結(jié)果:-1,177777
程序解析:-1在內(nèi)存單元中(以補(bǔ)碼形式存放)為(1111111111111111)2,轉(zhuǎn)換為八進(jìn)制數(shù)為(177777)8。
③x格式:以無(wú)符號(hào)十六進(jìn)制形式輸出整數(shù)。對(duì)長(zhǎng)整型可以用"%lx"格式輸出。同樣也可以指定字段寬度用"%mx"格式輸出。
④u格式:以無(wú)符號(hào)十進(jìn)制形式輸出整數(shù)。對(duì)長(zhǎng)整型可以用"%lu"格式輸出。同樣也可以指定字段寬度用“%mu”格式輸出。
⑤c格式:輸出一個(gè)字符。
⑥s格式:用來(lái)輸出一個(gè)串。有幾中用法
%s:例如:printf("%s", "CHINA")輸出"CHINA"字符串(不包括雙引號(hào))。
%ms:輸出的字符串占m列,如字符串本身長(zhǎng)度大于m,則突破獲m的限制,將字符串全部輸出。若串長(zhǎng)小于m,則左補(bǔ)空格。
%-ms:如果串長(zhǎng)小于m,則在m列范圍內(nèi),字符串向左靠,右補(bǔ)空格。
%m.ns:輸出占m列,但只取字符串中左端n個(gè)字符。這n個(gè)字符輸出在m列的右側(cè),左補(bǔ)空格。
%-m.ns:其中m、n含義同上,n個(gè)字符輸出在m列范圍的左側(cè),右補(bǔ)空格。如果n>m,則自動(dòng)取n值,即保證n個(gè)字符正常輸出。
⑦f格式:用來(lái)輸出實(shí)數(shù)(包括單、雙精度),以小數(shù)形式輸出。有以下幾種用法:
%f:不指定寬度,整數(shù)部分全部輸出并輸出6位小數(shù)。
%m.nf:輸出共占m列,其中有n位小數(shù),如數(shù)值寬度小于m左端補(bǔ)空格。
%-m.nf:輸出共占n列,其中有n位小數(shù),如數(shù)值寬度小于m右端補(bǔ)空格。
⑧e格式:以指數(shù)形式輸出實(shí)數(shù)。可用以下形式:
%e:數(shù)字部分(又稱尾數(shù))輸出6位小數(shù),指數(shù)部分占5位或4位。
%m.ne和%-m.ne:m、n和”-”字符含義與前相同。此處n指數(shù)據(jù)的數(shù)字部分的小數(shù)位數(shù),m表示整個(gè)輸出數(shù)據(jù)所占的寬度。
⑨g格式:自動(dòng)選f格式或e格式中較短的一種輸出,且不輸出無(wú)意義的零。
---------------------------------------
關(guān)于printf函數(shù)的進(jìn)一步說(shuō)明:
如果想輸出字符"%",則應(yīng)該在“格式控制”字符串中用連續(xù)兩個(gè)%表示,如:
printf("%f%%", 1.0/3);
輸出0.333333%。
---------------------------------------
對(duì)于單精度數(shù),使用%f格式符輸出時(shí),僅前7位是有效數(shù)字,小數(shù)6位.
對(duì)于雙精度數(shù),使用%lf格式符輸出時(shí),前16位是有效數(shù)字,小數(shù)6位.
由高手指點(diǎn)
對(duì)于m.n的格式還可以用如下方法表示(例)
char ch[20];
printf("%*.*s\n",m,n,ch);
前邊的*定義的是總的寬度,后邊的定義的是輸出的個(gè)數(shù)。分別對(duì)應(yīng)外面的參數(shù)m和n 。我想這種方法的好處是可以在語(yǔ)句之外對(duì)參數(shù)m和n賦值,從而控制輸出格式。
一種輸出格式 %n 可以將所輸出字符串的長(zhǎng)度值賦紿一個(gè)變量, 見(jiàn)下例:
int slen;
printf("hello world%n", &slen);
執(zhí)行后變量被賦值為11
scanf格式控制的完整格式:
% * m l或h 格式字符
①格式字符與printf函數(shù)中的使用方式相同,以%d、%o、%x、%c、%s、%f、%e,無(wú)%u格式、%g格式。
②可以指定輸入數(shù)據(jù)所占列寬,系統(tǒng)自動(dòng)按它截取所需數(shù)據(jù)。如:
scanf(“%3d%3d”,&a,&b);
輸入:123456
系統(tǒng)自動(dòng)將123賦給a,456賦給b。
③%后的“*”附加說(shuō)明符,用來(lái)表示跳過(guò)它相應(yīng)的數(shù)據(jù)。例如:
scanf(“%2d%*3d%2d”,&a,&b);
如果輸入如下信息:1234567。將12賦給a,67賦給b。第二個(gè)數(shù)據(jù)”345”被跳過(guò)不賦給任何變量。
④輸入數(shù)據(jù)時(shí)不能規(guī)定精度,例如:
scanf(“%7.2f”,&a);
是不合法的,不能企圖輸入:12345.67而使a的值為12345.67。
------------------相關(guān)-------------------
輸入數(shù)據(jù)流分隔
①根據(jù)格式字符的含義從輸入流中取得數(shù)據(jù),當(dāng)輸入流中數(shù)據(jù)類型與格式字符要求不符時(shí),就認(rèn)為這一項(xiàng)結(jié)束。如:
scanf(“%d%c%f”,&a,&b,&c);
如果輸入如下信息:
1234r1234.567
則scanf函數(shù)在接收數(shù)據(jù)時(shí)發(fā)現(xiàn)”r”類型不匹配,于是把”1234”轉(zhuǎn)換成整型賦值給a,把”r”賦給變量b,最后把”1234.567”轉(zhuǎn)換成實(shí)型數(shù)據(jù)賦給c。
②根據(jù)格式項(xiàng)中指定的域?qū)挿指舫鰯?shù)據(jù)項(xiàng)。如語(yǔ)句:scanf(“%2d%3f%4f”,&a,&b,&c);
如果輸入如下信息:
123456789012345
則scanf函數(shù)在接收數(shù)據(jù)時(shí)根據(jù)域?qū)挵?2賦值給a,345賦值給b,6789賦值給c。
③隱示分隔符。空格、跳格符(’\t’)、換行符(’\n’)都是C語(yǔ)言認(rèn)定的數(shù)據(jù)分隔符。
④顯示分隔符。在scanf函數(shù)的兩個(gè)格式說(shuō)明項(xiàng)間有一個(gè)或多個(gè)普通字符,那么在輸入數(shù)據(jù)時(shí),在兩個(gè)數(shù)據(jù)之間也必須以這一個(gè)或多個(gè)字符分隔。如語(yǔ)句:
scanf(“a=%d,b=%f,c=%f”,&a,&b,&c);
則輸入數(shù)據(jù)應(yīng)該為:
a=1234,b=67.8,c=98.123
---------------------------------------
關(guān)于scanf函數(shù)的進(jìn)一步說(shuō)明:
①scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)是變量地址,而不應(yīng)是變量名。例如,如果a、b為整型變量,則
scanf(“%d,%d”,a,b);
是不對(duì)的,應(yīng)將”a,b”改為”&a,&b”。
②如果在“格式控制”字符串中除了格式說(shuō)明以外還有其它字符,則在輸入數(shù)據(jù)時(shí)應(yīng)輸入與這些字符相同的字符。例如:
scanf(“%d,%d”,&a,&b);
輸入時(shí)應(yīng)輸入:3,4。3與4之間的逗號(hào)應(yīng)與scanf函數(shù)中的“格式控制”中的逗號(hào)相對(duì)應(yīng),輸入其它符號(hào)是不對(duì)的。
③在用“%c”格式輸入字符時(shí),空格字符和轉(zhuǎn)義字符都作為有效字符輸入。
scanf(“%c%c%c”,&c1,&c2,&c3);
如輸入:a b c 。字符’a’賦給c1,字符(空格)’ ’賦給c2,字符’b’ 賦給c3。
④ scanf 中不使用U說(shuō)明符.對(duì)unsigned型數(shù)據(jù)用d、o、x說(shuō)明符輸入.
辭職已經(jīng)20天了,時(shí)間過(guò)得真快!
每天忙忙碌碌的活著,彷佛比上班的時(shí)候還忙,呵呵,當(dāng)然了,既想學(xué)習(xí)又想玩,的確是比上班的時(shí)候忙多了
辭職之后的一周時(shí)間都在看電視劇,把射雕英雄傳和神雕俠侶都詳細(xì)的看了一遍,終于把這個(gè)多年的夢(mèng)給圓了,05年復(fù)習(xí)考研的時(shí)候,有一段時(shí)間特想看神雕俠侶,可惜當(dāng)時(shí)忙于復(fù)習(xí),也沒(méi)找到完整的小說(shuō)版,所以一直到4年之后的今天才把它給看了。其實(shí)人一生有很多小小的心愿,因?yàn)殛幉铌?yáng)錯(cuò)各種原因吧,沒(méi)得實(shí)現(xiàn)。但是我辭職后的第一個(gè)周末,看到安徽衛(wèi)視在播放射雕英雄傳,于是在網(wǎng)上搜了一下,終于在土豆網(wǎng)上把全部都看了一遍....人,有夢(mèng)想,真好!
玩了幾天,玩夠了,休息夠了,終于該干點(diǎn)正事了。于是從當(dāng)當(dāng)網(wǎng)上訂購(gòu)了幾本Protel99的教程,想徹底的學(xué)習(xí)一下PCB。也是一個(gè)遺憾,碩士的時(shí)候一直覺(jué)得自己不會(huì)PCB,是一塊太短的木板,現(xiàn)在也終于有機(jī)會(huì)把它補(bǔ)得長(zhǎng)些了,因?yàn)橄肓擞窒耄瑢?shí)在是不愿意做軟件開(kāi)發(fā),還是向硬件方面發(fā)展吧,所以先過(guò)了PCB這一關(guān)
之間投遞了一些簡(jiǎn)歷,面試了一家公司,不過(guò)覺(jué)得自己的期望工資把人家給嚇著了,所以就沒(méi)消息了,唉,在一個(gè)小城市里想找硬件方面的公司的確機(jī)會(huì)很少,不過(guò)我不放棄,我要嘗試,我要挑戰(zhàn)一下自己
和男朋友一起在健身房辦了張會(huì)員卡,期限一年,本意為鍛煉身體,增強(qiáng)體質(zhì)。可是去了兩次之后看到那么多的魔鬼身材,再看看自己,于是也想減肥了。減肥,也是我多年來(lái)的夢(mèng)想之一啊,可惜一直都沒(méi)有實(shí)現(xiàn),反而是越來(lái)越胖了
想到一句話,連自己的體重都控制不住,那還能讓什么在自己的掌控之中呢,呵呵,話又說(shuō)回來(lái),吃胖容易,減肥的確很難
這幾天在網(wǎng)上溜達(dá)溜達(dá),隨著自己學(xué)習(xí)PROTEL進(jìn)程的推進(jìn),準(zhǔn)備開(kāi)始好好學(xué)習(xí)FPGA,困難很多,可是要堅(jiān)持,堅(jiān)信自己會(huì)成功的
改變?nèi)松?span lang=EN-US>32句勵(lì)志名言
1、大多數(shù)人想要改造這個(gè)世界,但卻罕有人想改造自己。
2、積極的人在每一次憂患中都看到一個(gè)機(jī)會(huì), 而消極的人則在每個(gè)機(jī)會(huì)都看到某種憂患。
3、莫找借口失敗,只找理由成功。(不為失敗找理由,要為成功找方法)
4、偉人之所以偉大,是因?yàn)樗c別人共處逆境時(shí),別人失去了信心,他卻下決心實(shí)現(xiàn)自己的目標(biāo)。
5、世上沒(méi)有絕望的處境,只有對(duì)處境絕望的人。
6、當(dāng)你感到悲哀痛苦時(shí),最好是去學(xué)些什么東西。學(xué)習(xí)會(huì)使你永遠(yuǎn)立于不敗之地。
7、世界上那些最容易的事情中,拖延時(shí)間最不費(fèi)力。
8、人之所以能,是相信能。
9、一個(gè)有信念者所開(kāi)發(fā)出的力量,大于99個(gè)只有興趣者。
10、每一發(fā)奮努力的背后,必有加倍的賞賜。
11、人生偉業(yè)的建立 ,不在能知,乃在能行。
12、任何的限制,都是從自己的內(nèi)心開(kāi)始的。
13、含淚播種的人一定能含笑收獲。
14、欲望以提升熱忱,毅力以磨平高山。
15、一個(gè)能從別人的觀念來(lái)看事情,能了解別人心靈活動(dòng)的人永遠(yuǎn)不必為自己的前途擔(dān)心。
16、一個(gè)人最大的破產(chǎn)是絕望,最大的資產(chǎn)是希望。
17、不要等待機(jī)會(huì),而要?jiǎng)?chuàng)造機(jī)會(huì)。
18、如果寒暄只是打個(gè)招呼就了事的話,那與猴子的呼叫聲有什么不同呢? 事實(shí)上,正確的寒暄必須在短短一句話中明顯地表露出你對(duì)他的關(guān)懷。
19、昨晚多幾分鐘的準(zhǔn)備,今天少幾小時(shí)的麻煩。
20、做對(duì)的事情比把事情做對(duì)重要。
21、人格的完善是本,財(cái)富的確立是末。
22、沒(méi)有一種不通過(guò)蔑視、忍受和奮斗就可以征服的命運(yùn)。
23、行動(dòng)是治愈恐懼的良藥,而猶豫、拖延將不斷滋養(yǎng)恐懼。
24、沒(méi)有天生的信心,只有不斷培養(yǎng)的信心。
25、只有一條路不能選擇——那就是放棄的路;只有一條路不能拒絕——那就是成長(zhǎng)的路。
26、人性最可憐的就是:我們總是夢(mèng)想著天邊的一座奇妙的玫瑰園,而不去欣賞今天就開(kāi)在我們窗口的玫瑰。
27、征服畏懼、建立自信的最快最確實(shí)的方法,就是去做你害怕的事,直到你獲得成功的經(jīng)驗(yàn)。
28、失敗是什么?沒(méi)有什么,只是更走近成功一步;成功是什么?就是走過(guò)了所有通向失敗的路,只剩下一條路,那就是成功的路。
29、讓我們將事前的憂慮,換為事前的思考和計(jì)劃吧!
30、再長(zhǎng)的路,一步步也能走完,再短的路,不邁開(kāi)雙腳也無(wú)法到達(dá)。
31、任何業(yè)績(jī)的質(zhì)變都來(lái)自于量變的積累。
32、成功不是將來(lái)才有的,而是從決定去做的那一刻起,持續(xù)累積而成。
|