Beyond the C++ Standard Library: An Introduction to Boost By Bjö RN Karlsson ............................................... Publisher: Addison Wesley Professional Pub Date: August 31, 2005 ISBN: 0321133544 Pages: 432
標(biāo)簽: Introduction Standard Karlsson Library
上傳時(shí)間: 2015-07-18
上傳用戶:lizhen9880
問題描述: 設(shè)R={r1,r2,…,RN}是要進(jìn)行排列的n個(gè)元素,其中r1,r2,…,RN可能相同。試設(shè)計(jì)一個(gè)算法,列出R的所有不同排列。 編程任務(wù): 給定以及待排列的個(gè)元素。計(jì)算出這個(gè)元素的所有不同排列。
標(biāo)簽: 61611 RN 元素
上傳時(shí)間: 2015-09-17
上傳用戶:xuan‘nian
設(shè)R={ r , r , , RN 1 2 }是要進(jìn)行排列的n個(gè)元素。其中元素n r , r , , r 1 2 可能相同。試設(shè)計(jì) 一個(gè)算法,列出R的所有不同排列。
標(biāo)簽: 61516 元素 RN 算法
上傳時(shí)間: 2014-01-16
上傳用戶:qilin
問題描述:設(shè)R={ r1 , r2, r3, ..., RN }是要進(jìn)行排列的n個(gè)元素,其中元素 r1 , r2, r3, ..., RN 可能相同。試設(shè)計(jì)一個(gè)算法,列出R的所有不同排列。 算法設(shè)計(jì):在主程序中交互輸入n (1≤n≤100)及r1 , r2, r3, ..., RN,計(jì)算并在窗口中輸出R的所有不同排列。
標(biāo)簽: r1 RN 元素
上傳時(shí)間: 2013-12-23
上傳用戶:13188549192
Euler函數(shù): m = p1^r1 * p2^r2 * …… * pn^RN ai >= 1 , 1 <= i <= n Euler函數(shù): 定義:phi(m) 表示小于等于m并且與m互質(zhì)的正整數(shù)的個(gè)數(shù)。 phi(m) = p1^(r1-1)*(p1-1) * p2^(r2-1)*(p2-1) * …… * pn^(RN-1)*(pn-1) = m*(1 - 1/p1)*(1 - 1/p2)*……*(1 - 1/pn) = p1^(r1-1)*p2^(r2-1)* …… * pn^(RN-1)*phi(p1*p2*……*pn) 定理:若(a , m) = 1 則有 a^phi(m) = 1 (mod m) 即a^phi(m) - 1 整出m 在實(shí)際代碼中可以用類似素?cái)?shù)篩法求出 for (i = 1 i < MAXN i++) phi[i] = i for (i = 2 i < MAXN i++) if (phi[i] == i) { for (j = i j < MAXN j += i) { phi[j] /= i phi[j] *= i - 1 } } 容斥原理:定義phi(p) 為比p小的與p互素的數(shù)的個(gè)數(shù) 設(shè)n的素因子有p1, p2, p3, … pk 包含p1, p2…的個(gè)數(shù)為n/p1, n/p2… 包含p1*p2, p2*p3…的個(gè)數(shù)為n/(p1*p2)… phi(n) = n - sigm_[i = 1](n/pi) + sigm_[i!=j](n/(pi*pj)) - …… +- n/(p1*p2……pk) = n*(1 - 1/p1)*(1 - 1/p2)*……*(1 - 1/pk)
標(biāo)簽: Euler lt phi 函數(shù)
上傳時(shí)間: 2014-01-10
上傳用戶:wkchong
單片機(jī)入門基礎(chǔ)知識(shí)大全免費(fèi)下載 單片機(jī)第八課(尋址方式與指令系統(tǒng)) 通過前面的學(xué)習(xí),我們已經(jīng)了解了單片機(jī)內(nèi)部的結(jié)構(gòu),并且也已經(jīng)知道,要控制單片機(jī),讓它為我們干學(xué),要用指令,我們已學(xué)了幾條指令,但很零散,從現(xiàn)在開始,我們將要系統(tǒng)地學(xué)習(xí)8051的指令部份。 一、概述 1、指令的格式 我們已知,要讓計(jì)算機(jī)做事,就得給計(jì)算機(jī)以指令,并且我們已知,計(jì)算機(jī)很“笨”,只能懂得數(shù)字,如前面我們寫進(jìn)機(jī)器的75H,90H,00H等等,所以指令的第一種格式就是機(jī)器碼格式,也說是數(shù)字的形式。但這種形式實(shí)在是為難我們?nèi)肆?,太難記了,于是有另一種格式,助記符格式,如MOV P1,#0FFH,這樣就好記了。 這兩種格式之間的關(guān)系呢,我們不難理解,本質(zhì)上它們完全等價(jià),只是形式不一樣而已。 2、匯編 我們寫指令使用匯編格式,而計(jì)算機(jī)只懂機(jī)器碼格式,所以要將我們寫的匯編格式的指令轉(zhuǎn)換為機(jī)器碼格式,這種轉(zhuǎn)換有兩種方法:手工匯編和機(jī)器匯編。手工匯編實(shí)際上就是查表,因?yàn)檫@兩種格式純粹是格式不同,所以是一一對應(yīng)的,查一張表格就行了。不過手工查表總是嫌麻煩,所以就有了計(jì)算機(jī)軟件,用計(jì)算機(jī)軟件來替代手工查表,這就是機(jī)器匯編。 二、尋址 讓我們先來復(fù)習(xí)一下我們學(xué)過的一些指令:MOV P1,#0FFH,MOV R7,#0FFH這些指令都是將一些數(shù)據(jù)送到相應(yīng)的位置中去,為什么要送數(shù)據(jù)呢?第一個(gè)因?yàn)樗腿氲臄?shù)可以讓燈全滅掉,第二個(gè)是為了要實(shí)現(xiàn)延時(shí),從這里我們可以看出來,在用單片機(jī)的編程語言編程時(shí),經(jīng)常要用到數(shù)據(jù)的傳遞,事實(shí)上數(shù)據(jù)傳遞是單片機(jī)編程時(shí)的一項(xiàng)重要工作,一共有28條指令(單片機(jī)共111條指令)。下面我們就從數(shù)據(jù)傳遞類指令開始吧。 分析一下MOV P1,#0FFH這條指令,我們不難得出結(jié)論,第一個(gè)詞MOV是命令動(dòng)詞,也就是決定做什么事情的,MOV是MOVE少寫了一個(gè)E,所以就是“傳遞”,這就是指令,規(guī)定做什么事情,后面還有一些參數(shù),分析一下,數(shù)據(jù)傳遞必須要有一個(gè)“源”也就是你要送什么數(shù),必須要有一個(gè)“目的”,也就是你這個(gè)數(shù)要送到什么地方去,顯然在上面那條指令中,要送的數(shù)(源)就是0FFH,而要送達(dá)的地方(目的地)就是P1這個(gè)寄存器。在數(shù)據(jù)傳遞類指令中,均將目的地寫在指令的后面,而將源寫在最后。 這條指令中,送給P1是這個(gè)數(shù)本身,換言之,做完這條指令后,我們可以明確地知道,P1中的值是0FFH,但是并不是任何時(shí)候都可以直接給出數(shù)本身的。例如,在我們前面給出的延時(shí)程序例是這樣寫的: MAIN: SETB P1.0 ??;(1) LCALL DELAY ;(2) CLR P1.0 ;(3) LCALL DELAY ;(4) AJMP MAIN ;(5) ;以下子程序 DELAY: MOV R7,#250 ??;(6) D1: MOV R6,#250 ;(7) D2: DJNZ R6,D2 ;(8) DJNZ R7,D1 ;(9) RET ;(10) END ??;(11) 表1 MAIN: SETB P1.0 ??;(1) MOV 30H,#255 LCALL DELAY ; CLR P1.0 ;(3) MOV 30H,#200 LCALL DELAY ?。唬ǎ矗? AJMP MAIN ??;(5) ;以下子程序 DELAY: MOV R7,30H ?。唬ǎ叮?D1: MOV R6,#250 ;(7) D2: DJNZ R6,D2 ?。唬ǎ福? DJNZ R7,D1 ?。唬ǎ梗? RET ??;(10) END ??;(11) 表2 這樣一來,我每次調(diào)用延時(shí)程序延時(shí)的時(shí)間都是相同的(大致都是0.13S),如果我提出這樣的要求:燈亮后延時(shí)時(shí)間為0.13S燈滅,燈滅后延時(shí)0.1秒燈亮,如此循環(huán),這樣的程序還能滿足要求嗎?不能,怎么辦?我們可以把延時(shí)程序改成這樣(見表2):調(diào)用則見表2中的主程,也就是先把一個(gè)數(shù)送入30H,在子程序中R7中的值并不固定,而是根據(jù)30H單元中傳過來的數(shù)確定。這樣就可以滿足要求。 從這里我們可以得出結(jié)論,在數(shù)據(jù)傳遞中要找到被傳遞的數(shù),很多時(shí)候,這個(gè)數(shù)并不能直接給出,需要變化,這就引出了一個(gè)概念:如何尋找操作數(shù),我們把尋找操作數(shù)所在單元的地址稱之為尋址。在這里我們直接使用數(shù)所在單元的地址找到了操作數(shù),所以稱這種方法為直接尋址。除了這種方法之外,還有一種,如果我們把數(shù)放在工作寄存器中,從工作寄存器中尋找數(shù)據(jù),則稱之為寄存器尋址。例:MOV A,R0就是將R0工作寄存器中的數(shù)據(jù)送到累加器A中去。提一個(gè)問題:我們知道,工作寄存器就是內(nèi)存單元的一部份,如果我們選擇工作寄存器組0,則R0就是RAM的00H單元,那么這樣一來,MOV A,00H,和MOV A,R0不就沒什么區(qū)別了嗎?為什么要加以區(qū)分呢?的確,這兩條指令執(zhí)行的結(jié)果是完全相同的,都是將00H單元中的內(nèi)容送到A中去,但是執(zhí)行的過程不同,執(zhí)行第一條指令需要2個(gè)周期,而第二條則只需要1個(gè)周期,第一條指令變成最終的目標(biāo)碼要兩個(gè)字節(jié)(E5H 00H),而第二條則只要一個(gè)字節(jié)(E8h)就可以了。 這么斤斤計(jì)較!不就差了一個(gè)周期嗎,如果是12M的晶振的話,也就1個(gè)微秒時(shí)間了,一個(gè)字節(jié)又能有多少? 不對,如果這條指令只執(zhí)行一次,也許無所謂,但一條指令如果執(zhí)行上1000次,就是1毫秒,如果要執(zhí)行1000000萬次,就是1S的誤差,這就很可觀了,單片機(jī)做的是實(shí)時(shí)控制的事,所以必須如此“斤斤計(jì)較”。字節(jié)數(shù)同樣如此。 再來提一個(gè)問題,現(xiàn)在我們已知,尋找操作數(shù)可以通過直接給的方式(立即尋址)和直接給出數(shù)所在單元地址的方式(直接尋址),這就夠了嗎? 看這個(gè)問題,要求從30H單元開始,取20個(gè)數(shù),分別送入A累加器。 就我們目前掌握的辦法而言,要從30H單元取數(shù),就用MOV A,30H,那么下一個(gè)數(shù)呢?是31H單元的,怎么取呢?還是只能用MOV A,31H,那么20個(gè)數(shù),不是得20條指令才能寫完嗎?這里只有20個(gè)數(shù),如果要送200個(gè)或2000個(gè)數(shù),那豈不要寫上200條或2000條命令?這未免太笨了吧。為什么會(huì)出現(xiàn)這樣的狀況?是因?yàn)槲覀冎粫?huì)把地址寫在指令中,所以就沒辦法了,如果我們不是把地址直接寫在指令中,而是把地址放在另外一個(gè)寄存器單元中,根據(jù)這個(gè)寄存器單元中的數(shù)值決定該到哪個(gè)單元中取數(shù)據(jù),比如,當(dāng)前這個(gè)寄存器中的值是30H,那么就到30H單元中去取,如果是31H就到31H單元中去取,就可以解決這個(gè)問題了。怎么個(gè)解決法呢?既然是看的寄存器中的值,那么我們就可以通過一定的方法讓這里面的值發(fā)生變化,比如取完一個(gè)數(shù)后,將這個(gè)寄存器單元中的值加1,還是執(zhí)行同一條指令,可是取數(shù)的對象卻不一樣了,不是嗎。通過例子來說明吧。 MOV R7,#20 MOV R0,#30H LOOP:MOV A,@R0 INC R0 DJNZ R7,LOOP 這個(gè)例子中大部份指令我們是能看懂的,第一句,是將立即數(shù)20送到R7中,執(zhí)行完后R7中的值應(yīng)當(dāng)是20。第二句是將立即數(shù)30H送入R0工作寄存器中,所以執(zhí)行完后,R0單元中的值是30H,第三句,這是看一下R0單元中是什么值,把這個(gè)值作為地址,取這個(gè)地址單元的內(nèi)容送入A中,此時(shí),執(zhí)行這條指令的結(jié)果就相當(dāng)于MOV A,30H。第四句,沒學(xué)過,就是把R0中的值加1,因此執(zhí)行完后,R0中的值就是31H,第五句,學(xué)過,將R7中的值減1,看是否等于0,不等于0,則轉(zhuǎn)到標(biāo)號(hào)LOOP處繼續(xù)執(zhí)行,因此,執(zhí)行完這句后,將轉(zhuǎn)去執(zhí)行MOV A,@R0這句話,此時(shí)相當(dāng)于執(zhí)行了MOV A,31H(因?yàn)榇藭r(shí)的R0中的值已是31H了),如此,直到R7中的值逐次相減等于0,也就是循環(huán)20次為止,就實(shí)現(xiàn)了我們的要求:從30H單元開始將20個(gè)數(shù)據(jù)送入A中。 這也是一種尋找數(shù)據(jù)的方法,由于數(shù)據(jù)是間接地被找到的,所以就稱之為間址尋址。注意,在間址尋址中,只能用R0或R1存放等尋找的數(shù)據(jù)。 二、指令 數(shù)據(jù)傳遞類指令 1) 以累加器為目的操作數(shù)的指令 MOV A,RN MOV A,direct MOV A,@Ri MOV A,#data 第一條指令中,RN代表的是R0-R7。第二條指令中,direct就是指的直接地址,而第三條指令中,就是我們剛才講過的。第四條指令是將立即數(shù)data送到A中。 下面我們通過一些例子加以說明: MOV A,R1 ;將工作寄存器R1中的值送入A,R1中的值保持不變。 MOV A,30H ;將內(nèi)存30H單元中的值送入A,30H單元中的值保持不變。 MOV A,@R1 ;先看R1中是什么值,把這個(gè)值作為地址,并將這個(gè)地址單元中的值送入A中。如執(zhí)行命令前R1中的值為20H,則是將20H單元中的值送入A中。 MOV A,#34H ;將立即數(shù)34H送入A中,執(zhí)行完本條指令后,A中的值是34H。 2)以寄存器RN為目的操作的指令 MOV RN,A MOV RN,direct MOV RN,#data 這組指令功能是把源地址單元中的內(nèi)容送入工作寄存器,源操作數(shù)不變。
標(biāo)簽: 單片機(jī) 免費(fèi)下載 基礎(chǔ)知識(shí)
上傳時(shí)間: 2013-10-13
上傳用戶:3294322651
單片機(jī)指令系統(tǒng) 3.1 MCS-51指令簡介 3.2 指令系統(tǒng) 3.1 MCS-51指令簡介 二、MCS-51系列單片機(jī)指令系統(tǒng)分類 按尋址方式分為以下七種:按功能分為以下四種: 1、立即立即尋址 1、數(shù)據(jù)傳送指令位操 2、直接尋址 2、算術(shù)運(yùn)算指令 3、寄存器尋址 3、邏輯運(yùn)算指令 4、寄存器間接尋址指令 4、控制轉(zhuǎn)移類指令 5、相對尋址 5、位操作指令 6、變址尋址 7、位尋址 三、尋址方式 3、寄存器間接尋址 MOV A, @R1 操作數(shù)是通過寄存器間接得到的。 4、立即尋址 MOV A, #40H 操作數(shù)在指令中直接給出。 5、基址寄存器加變址寄存器尋址 以DPTR或PC為基址寄存器,以A為變址寄存器, 以兩者相加形成的16位地址為操作數(shù)的地址。 MOVC A, @A+DPTR MOVC A, @A+PC 四、指令中常用符號(hào)說明 RN——當(dāng)前寄存器區(qū)的8個(gè)工作寄存器R0~R7(n=0~7); Ri——當(dāng)前寄存器區(qū)可作地址寄存器的2個(gè)工作寄存器R0和R1(i=0,1); direct——8位內(nèi)部數(shù)據(jù)存儲(chǔ)器單元的地址及特殊功能寄存器的地址; #data——表示8位常數(shù)(立即數(shù)); #datal6——表示16位常數(shù); add 16——表示16位地址; addrll——表示11位地址; rel——8位帶符號(hào)的地址偏移量; bit——表示位地址; @——間接尋址寄存器或基址寄存器的前綴; ( )——表示括號(hào)中單元的內(nèi)容 (( ))——表示間接尋址的內(nèi)容; 五、MCS-51指令簡介 1. 以累加器A為目的操作數(shù)的指令 2. 以RN為目的操作數(shù)的指令 3. 以直接地址為目的操作數(shù)的指令 4. 以寄存器間接地址為目的操作數(shù)指令 應(yīng)用舉例1 8段數(shù)碼管顯示 應(yīng)用舉例2 3.2 指令系統(tǒng) 2、堆棧操作指令 3. 累加器A與外部數(shù)據(jù)傳輸指令 4. 查表指令 MOVC A, @A+PC 例子: 5. 字節(jié)交換指令 6. 半字節(jié)交換指令 二、算術(shù)操作類指令 PSW寄存器 2. 帶進(jìn)位加法指令 3. 加1指令 4. 十進(jìn)制調(diào)整指令 5. 帶借位減法指令(Subtraction) 6. 減1指令(Decrease) 7. 乘法指令(Multiplication) 8. 除法指令(Division) 三、邏輯運(yùn)算指令 1. 簡單邏輯操作指令 2. 循環(huán)指令 帶進(jìn)位左循環(huán)指令(Rotate Accumulator Left through Carry flag) 右循環(huán)指令(Rotate Accumulator Right) 帶進(jìn)位右循環(huán)指令(Rotate A Right with C) 3. 邏輯與指令 4. 邏輯或指令 5. 邏輯異或指令 四、控制轉(zhuǎn)移類指令 1. 跳轉(zhuǎn)指令 相對轉(zhuǎn)移指令 SJMP rel PC←(PC)+2 PC←(PC)+rel 程序中標(biāo)號(hào)與地址之間的關(guān)系 2. 條件轉(zhuǎn)移指令 3. 比較不相等轉(zhuǎn)移指令 4. 減 1 不為 0 轉(zhuǎn)移指令 5. 調(diào)用子程序指令 7. 中斷返回指令 五、位操作指令 1. 數(shù)據(jù)位傳送指令 2. 位變量邏輯指令 3. 條件轉(zhuǎn)移類指令
標(biāo)簽: 單片機(jī) 指令系統(tǒng)
上傳時(shí)間: 2013-10-27
上傳用戶:xuanjie
國產(chǎn)木馬WAY2.4的源代碼,感謝作者提供,不過句作者說,以后不會(huì)再升級(jí)了 :(哪位有興趣的朋友,接著研究研究吧RN
標(biāo)簽: WAY 2.4 國產(chǎn) 木馬
上傳時(shí)間: 2013-12-22
上傳用戶:zgu489
pyformat.zip包中有兩個(gè)文件夾,pyformat_src文件夾里的為源代碼,pyformat_dist文件夾里的為編譯后的exe可執(zhí)行程序,另外每個(gè)文件夾里都放了一個(gè)名為“testfile.txt”的測試文件。 源碼使用方法示例:執(zhí)行"python pyformat.py testfile.txt"。 可執(zhí)行程序使用方法示例:執(zhí)行“pyformat testfile.txt”。 即可把文件名中的不帶調(diào)拼音+聲調(diào)記號(hào)轉(zhuǎn)化為帶調(diào)拼音輸出到stdout。文件名可以有多個(gè)。 例如:輸入wo3 shi4 zhong1 guo2 ren2. 輸出為wǒ shì zhōng guó rén. zho1ng、zhon1g、zhong1、zhong12341等均輸出為zhōng。
標(biāo)簽: pyformat zip
上傳時(shí)間: 2015-11-26
上傳用戶:1427796291
2 分類指令 在介紹各條分類指令之前,將指令中的操作數(shù)及注釋中的符號(hào)說明如下。 RN:當(dāng)前指定的工作寄存器組中的Ro-R7(其中n=0,1,2,…,7)。 Ri:當(dāng)前指定的工作寄存器組中的RO,R1(其中i=0,1)。 (Ri):Ri間址尋址指定的地址單元。 ((Ri)):Ri間址尋址指定地址單元中的內(nèi)容。 dir:8位直接字節(jié)地址(在片內(nèi)RAM和SFR存儲(chǔ)空間中)。 #data8:8位立即數(shù)。 #datal6:16位立即數(shù)。 addrl6:16位地址值。 addrll:11位地址值。
標(biāo)簽: 分類 指令
上傳用戶:1079836864
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1