




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2021-6-20 第一講第一講 不同層次程序員看到的運(yùn)算及不同層次程序員看到的運(yùn)算及ALU 第二講第二講 定點(diǎn)數(shù)運(yùn)算及其運(yùn)算部件定點(diǎn)數(shù)運(yùn)算及其運(yùn)算部件 第三講第三講 浮點(diǎn)數(shù)運(yùn)算及其運(yùn)算部件浮點(diǎn)數(shù)運(yùn)算及其運(yùn)算部件 Ch3: Arithmetic and Logic Operate and ALU 運(yùn)算方法和運(yùn)算部件運(yùn)算方法和運(yùn)算部件 2021-6-20 第一講:第一講:不同層次程序員看到的運(yùn)算及不同層次程序員看到的運(yùn)算及ALUALU 主主 要要 內(nèi)內(nèi) 容容 u高級(jí)語(yǔ)言程序中涉及的運(yùn)算(以高級(jí)語(yǔ)言程序中涉及的運(yùn)算(以C語(yǔ)言為例)語(yǔ)言為例) 整數(shù)算術(shù)運(yùn)算、浮點(diǎn)數(shù)算術(shù)運(yùn)算整數(shù)算術(shù)運(yùn)算、浮點(diǎn)數(shù)算術(shù)運(yùn)算
2、 按位、邏輯、移位、位擴(kuò)展和位截?cái)喟次弧⑦壿?、移位、位擴(kuò)展和位截?cái)?u指令集中涉及到的運(yùn)算(指令集中涉及到的運(yùn)算( 以以MIPS為例為例 ) 涉及到的定點(diǎn)數(shù)運(yùn)算涉及到的定點(diǎn)數(shù)運(yùn)算 - 算術(shù)運(yùn)算算術(shù)運(yùn)算 帶符號(hào)整數(shù)運(yùn)算:帶符號(hào)整數(shù)運(yùn)算:取負(fù)取負(fù) / 符號(hào)擴(kuò)展符號(hào)擴(kuò)展 / 加加 / 減減 / 乘乘 / 除除 / 算術(shù)移位算術(shù)移位 無(wú)符號(hào)整數(shù)運(yùn)算:無(wú)符號(hào)整數(shù)運(yùn)算:0擴(kuò)展擴(kuò)展 / 加加 / 減減 / 乘乘 / 除除 - 邏輯運(yùn)算邏輯運(yùn)算 邏輯操作:邏輯操作:與與 / 或或 / 非非 / 移位操作:移位操作:邏輯左移邏輯左移 / 邏輯右移邏輯右移 涉及到的浮點(diǎn)數(shù)運(yùn)算:加、減、乘、除涉及到的浮點(diǎn)數(shù)運(yùn)算:加
3、、減、乘、除 u基本運(yùn)算部件基本運(yùn)算部件ALU的設(shè)計(jì)的設(shè)計(jì) 2021-6-20 C語(yǔ)言程序中涉及的運(yùn)算語(yǔ)言程序中涉及的運(yùn)算 u算術(shù)運(yùn)算(最基本的運(yùn)算)算術(shù)運(yùn)算(最基本的運(yùn)算) 無(wú)符號(hào)數(shù)、帶符號(hào)整數(shù)、浮點(diǎn)數(shù)的無(wú)符號(hào)數(shù)、帶符號(hào)整數(shù)、浮點(diǎn)數(shù)的+、-、*、/ 運(yùn)算等運(yùn)算等 u按位運(yùn)算按位運(yùn)算 用途用途 -對(duì)對(duì)位串位串實(shí)現(xiàn)實(shí)現(xiàn)“掩碼掩碼”(mask)操作或相應(yīng)的其他處理)操作或相應(yīng)的其他處理 (主要用于對(duì)(主要用于對(duì)多媒體數(shù)據(jù)或狀態(tài)多媒體數(shù)據(jù)或狀態(tài)/控制信息控制信息進(jìn)行處理)進(jìn)行處理) 操作操作 -按位或:按位或:“|” -按位與:按位與:“ unsigned short usi = si; int i
4、 = si; unsingned ui = usi ; si = -32768 80 00 usi = 32768 80 00 i = -32768 FF FF 80 00 ui = 32768 00 00 80 00 例例2 截?cái)嗖僮鹘財(cái)嗖僮?int i = 32768; short si = (short) i; int j = si; i和和j是否相等?是否相等? 不相等!不相等! i = 32768 00 00 80 00 si = -32768 80 00 j = -32768 FF FF 80 00 原因:對(duì)原因:對(duì)i i截?cái)鄷r(shí)發(fā)生了截?cái)鄷r(shí)發(fā)生了 “溢出溢出”,即:,即:32768
5、 截?cái)酁榻財(cái)酁?6位數(shù)時(shí),因其位數(shù)時(shí),因其 超出超出16位能表示的最大位能表示的最大 值,故無(wú)法截?cái)酁檎_值,故無(wú)法截?cái)酁檎_ 的的16位數(shù)!位數(shù)! 在大端機(jī)上輸出在大端機(jī)上輸出si, usi, i, ui的十進(jìn)制和十六進(jìn)制值是什么的十進(jìn)制和十六進(jìn)制值是什么? 2021-6-20 如何實(shí)現(xiàn)高級(jí)語(yǔ)言源程序中的運(yùn)算?如何實(shí)現(xiàn)高級(jí)語(yǔ)言源程序中的運(yùn)算? u總結(jié):總結(jié):C語(yǔ)言程序中的基本數(shù)據(jù)類(lèi)型及其基本運(yùn)算類(lèi)型語(yǔ)言程序中的基本數(shù)據(jù)類(lèi)型及其基本運(yùn)算類(lèi)型 基本數(shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型 -無(wú)符號(hào)數(shù)、帶符號(hào)整數(shù)、浮點(diǎn)數(shù)、位串、字符(串)無(wú)符號(hào)數(shù)、帶符號(hào)整數(shù)、浮點(diǎn)數(shù)、位串、字符(串) 基本運(yùn)算類(lèi)型基本運(yùn)算類(lèi)型 -算術(shù)
6、、按位、邏輯、移位、擴(kuò)展和截?cái)?、匹配算術(shù)、按位、邏輯、移位、擴(kuò)展和截?cái)唷⑵ヅ?u計(jì)算機(jī)如何實(shí)現(xiàn)高級(jí)語(yǔ)言程序中的運(yùn)算?計(jì)算機(jī)如何實(shí)現(xiàn)高級(jí)語(yǔ)言程序中的運(yùn)算? 將各類(lèi)表達(dá)式編譯(轉(zhuǎn)換)為指令序列將各類(lèi)表達(dá)式編譯(轉(zhuǎn)換)為指令序列 計(jì)算機(jī)直接執(zhí)行指令來(lái)完成運(yùn)算計(jì)算機(jī)直接執(zhí)行指令來(lái)完成運(yùn)算 例:例:C語(yǔ)言賦值語(yǔ)句語(yǔ)言賦值語(yǔ)句“f = (g+h) (i+j);”中變量中變量i、j、f、g、h由編譯器分別由編譯器分別 分配給分配給MIPS寄存器寄存器$t0$t4。寄存器。寄存器$t0$t7的編號(hào)對(duì)應(yīng)的編號(hào)對(duì)應(yīng)815,上述程序段對(duì),上述程序段對(duì) 應(yīng)的應(yīng)的MIPS機(jī)器代碼和匯編表示(機(jī)器代碼和匯編表示(#后為注
7、釋?zhuān)┤缦拢汉鬄樽⑨專(zhuān)┤缦拢?000000 01011 01100 01101 00000 100000 add $t5, $t3, $t4 # g+h 000000 01000 01001 01110 00000 100000 add $t6, $t0, $t1 # i+j 000000 01101 01110 01010 00000 100010 sub $t2, $t5, $t6 # f =(g+h)(i+j) 下面以下面以MIPSMIPS為例,看指令中會(huì)提供哪些運(yùn)算?能否完全支持高級(jí)語(yǔ)言需求?為例,看指令中會(huì)提供哪些運(yùn)算?能否完全支持高級(jí)語(yǔ)言需求? 2021-6-20 MIPS定點(diǎn)算術(shù)運(yùn)
8、算指令定點(diǎn)算術(shù)運(yùn)算指令 InstructionExampleMeaningComments add add $1,$2,$3$1 = $2 + $33 operands; exception possible subtractsub $1,$2,$3$1 = $2 $33 operands; exception possible add immediateaddi $1,$2,100$1 = $2 + 100+ constant; exception possible add unsignedaddu $1,$2,$3$1 = $2 + $33 operands; no exceptions
9、subtract unsigned subu $1,$2,$3$1 = $2 $33 operands; no exceptions add imm. unsign. addiu $1,$2,100 $1 = $2 + 100+ constant; no exceptions multiply mult $2,$3Hi, Lo = $2 x $3 64-bit signed product multiply unsigned multu$2,$3Hi, Lo = $2 x $3 64-bit unsigned product divide div $2,$3Lo = $2 $3,Lo = qu
10、otient, Hi = remainder Hi = $2 mod $3 divide unsigned divu $2,$3Lo = $2 $3,Unsigned quotient z1=x+y; z2=x-y; 問(wèn)題:上述程序段中,x和y的機(jī)器數(shù)是什么?z1和z2的機(jī)器數(shù)是 什么? 回答:x的機(jī)器數(shù)為x補(bǔ), y的機(jī)器數(shù)為y補(bǔ) ; z1的機(jī)器數(shù)為x+y補(bǔ) ; z2的機(jī)器數(shù)為x-y補(bǔ) 。 因此,計(jì)算機(jī)中需要有一個(gè)電路,能夠?qū)崿F(xiàn)以下功能: 已知 x補(bǔ) 和 y補(bǔ) ,計(jì)算x+y補(bǔ) 和 x-y補(bǔ) 。 根據(jù)補(bǔ)碼定義,有如下公式: x+y補(bǔ) =2n+x+y= 2n+x+2n+y= x補(bǔ)+y補(bǔ) (mod
11、2n ) x-y補(bǔ)=2n+x-y= 2n+x+2n-y= x補(bǔ)+-y補(bǔ) (mod 2n ) y補(bǔ)=y補(bǔ)+1 2021-6-20 n位整數(shù)加位整數(shù)加/減運(yùn)算器減運(yùn)算器 利用帶標(biāo)志加法器,可構(gòu)造整數(shù)加/減 運(yùn)算器,進(jìn)行以下運(yùn)算: 無(wú)符號(hào)整數(shù)加、無(wú)符號(hào)整數(shù)減 帶符號(hào)整數(shù)加、帶符號(hào)整數(shù)減 當(dāng)Sub為1時(shí),做減法 當(dāng)Sub為0時(shí),做加法 補(bǔ)碼加減運(yùn)算公式 A+B補(bǔ) = A補(bǔ) + B 補(bǔ) ( mod 2n ) AB補(bǔ) = A補(bǔ) + B 補(bǔ) ( mod 2n ) 實(shí)現(xiàn)減法的主要工作在于:求B 補(bǔ) 問(wèn)題:如何求B補(bǔ)? B補(bǔ)=B補(bǔ)+1 在整數(shù)加/減運(yùn)算部件 基礎(chǔ)上,加上寄存器、 移位器以及控制邏輯, 就可實(shí)現(xiàn)A
12、LU、乘/除 運(yùn)算以及浮點(diǎn)運(yùn)算電路 Sum 加法器 4 4 4 A ZF Cin Cout 4 B 4 0 1 MUX Sub B OF 整數(shù)加/減運(yùn)算部件 SF CF B 2021-6-20 算術(shù)邏輯部件(算術(shù)邏輯部件(ALU) 進(jìn)行基本算術(shù)運(yùn)算與邏輯運(yùn)算 無(wú)符號(hào)整數(shù)加、減 帶符號(hào)整數(shù)加、減 與、或、非、異或等邏輯運(yùn)算 核心電路是整數(shù)加/減運(yùn)算部件 輸出除和/差等,還有標(biāo)志信息 有一個(gè)操作控制端(ALUop), 用來(lái)決定ALU所執(zhí)行的處理功能。 ALUop的位數(shù)k決定了操作的種類(lèi) 例如,當(dāng)位數(shù)k為3時(shí),ALU最多 只有23=8種操作。 ALUop Result ALUop Result AL
13、Uop Result ALUop Result 0 0 0 A加B 0 1 0 A與B 1 0 0 A取反 1 1 0 A 0 0 1 A減B 0 1 1 A或B 1 0 1 A B 1 1 1 未用 2021-6-20 回顧:認(rèn)識(shí)計(jì)算機(jī)中最基本的部件回顧:認(rèn)識(shí)計(jì)算機(jī)中最基本的部件 CPU:中央處理器;PC:程序計(jì)數(shù)器;MAR:存儲(chǔ)器地址寄存器 ALU:算術(shù)邏輯部件;IR:指令寄存器;MDR:存儲(chǔ)器數(shù)據(jù)寄存器 GPRs:通用寄存器組(由若干通用寄存器組成) 控制器 CPU PC 輸入 設(shè)備 輸出 設(shè)備 MAR MDR ALU 標(biāo) 志 寄 存 器 IR 地址 數(shù)據(jù) 控制 GPRs 0 1 2 3
14、 存儲(chǔ)器 0 1 2 3 4 5 6 7 2021-6-20 整數(shù)加、減運(yùn)算整數(shù)加、減運(yùn)算 uC語(yǔ)言程序中的整數(shù)有 帶符號(hào)整數(shù),如char、short、int、long型等 無(wú)符號(hào)整數(shù),如unsigned char、unsigned short、 unsigned等 u指針、地址等通常被說(shuō)明為無(wú)符號(hào)整數(shù),因而在進(jìn)行指針或地址運(yùn) 算時(shí),需要進(jìn)行無(wú)符號(hào)整數(shù)的加、減運(yùn)算 u無(wú)符號(hào)整數(shù)和帶符號(hào)整數(shù)的加、減運(yùn)算電路完全一樣,這個(gè)運(yùn)算電 路稱(chēng)為整數(shù)加減運(yùn)算部件,基于帶標(biāo)志加法器實(shí)現(xiàn) u最基本的加法器,因?yàn)橹挥衝位,所以是一種模2n運(yùn)算系統(tǒng)! 例:n=4,A=1001,B=1100 則:F=0101,Cou
15、t=1 加法器 n n n A B F Cin Cout 還記得這個(gè)加法器是如何實(shí)現(xiàn)的? 2021-6-20 n位帶標(biāo)志加法器位帶標(biāo)志加法器 n位加法器無(wú)法用于兩個(gè)n位帶符號(hào)整數(shù) (補(bǔ)碼)相加,無(wú)法判斷是否溢出 程序中經(jīng)常需要比較大小,通過(guò)(在加 法器中)做減法得到的標(biāo)志信息來(lái)判斷 溢出標(biāo)志OF: OF=Cn Cn-1 符號(hào)標(biāo)志SF: SF=Fn-1 零標(biāo)志ZF=1當(dāng)且僅 當(dāng)F=0; 進(jìn)位/借位標(biāo)志CF: CF=Cout Cin 2021-6-20 所有運(yùn)算電路的核心所有運(yùn)算電路的核心 Sum 加法器 n n n A ZF Cin Cout n B n 0 1 多路選擇器 Sub B OF 加
16、加/ /減運(yùn)算部件減運(yùn)算部件 CF=Co Sub SF 當(dāng)Sub為1時(shí),做減法 當(dāng)Sub為0時(shí),做加法 重要認(rèn)識(shí)1:計(jì)算機(jī)中所有算 術(shù)運(yùn)算都基于加法器實(shí)現(xiàn)! 重要認(rèn)識(shí)2:加法器不知道所運(yùn)算的是 帶符號(hào)數(shù)還是無(wú)符號(hào)數(shù)。 重要認(rèn)識(shí)3:加法器不判定對(duì)錯(cuò),總是 取低n位作為結(jié)果,并生成標(biāo)志信息。 溢出標(biāo)志 零標(biāo)志 符號(hào)標(biāo)志 進(jìn)/借位標(biāo)志 2021-6-20 條件標(biāo)志位(條件碼條件標(biāo)志位(條件碼CC) l 零標(biāo)志ZF、溢出標(biāo)志OF、進(jìn)/借位標(biāo)志CF、符號(hào)標(biāo)志SF稱(chēng)為條件標(biāo)志。 條件標(biāo)志(Flag)在運(yùn)算電路中產(chǎn)生,被記錄到專(zhuān)門(mén)的寄存器中 存放標(biāo)志的寄存器通常稱(chēng)為程序/狀態(tài)字寄存器或標(biāo)志寄存器。每個(gè)標(biāo)志對(duì)
17、 應(yīng)標(biāo)志寄存器中的一個(gè)標(biāo)志位。 如,IA-32中的EFLAGS寄存器 問(wèn)題:OF=?ZF=? SF=?CF=? 還記得如何得到各個(gè)標(biāo)志位嗎? OF:若A與B同號(hào)但與Sum不同號(hào),則1;否則0。SF:sum符號(hào) ZF:如Sum為0,則1,否則0。CF:Cout sub Sum 加法器加法器 n n n A ZF Cin Cout n B n 0 1 Mux Sel Sub B OF 整數(shù)加/減運(yùn)算部件 SF CF B 問(wèn)題:為什么要生成并 保存條件標(biāo)志? 為了在分支指令(條件 轉(zhuǎn)移指令)中被用作是 否轉(zhuǎn)移執(zhí)行的條件! if (ij) 2021-6-20 n位帶標(biāo)志加法器位帶標(biāo)志加法器 溢出標(biāo)志O
18、F: OF=Cn Cn-1 符號(hào)標(biāo)志SF: SF=Fn-1 零標(biāo)志ZF=1當(dāng)且僅 當(dāng)F=0; 進(jìn)位/借位標(biāo)志CF: CF=Cout Cin 2021-6-20 整數(shù)加法舉例整數(shù)加法舉例 若n=8,計(jì)算107+46=? 進(jìn)位是真正的符號(hào):+153 10710= 0110 10112 4610 = 0010 11102 0 1001 1001 溢出標(biāo)志OF=1、零標(biāo)志ZF=0、 符號(hào)標(biāo)志SF=1、進(jìn)位標(biāo)志CF=0 Sum Adder n n n A ZF Cin Cout n B n 0 1 Mux Sel Sub B OF 整數(shù)加/減運(yùn)算部件 SF CF B 兩個(gè)正數(shù)相加,結(jié)果為負(fù)數(shù), 故溢出!
19、即OF=1 做加法時(shí),主要判斷是否溢出 無(wú)符號(hào)加法溢出條件:CF=1 帶符號(hào)加法溢出條件:OF=1 無(wú)符號(hào):sum=153,因?yàn)镃F=0,故未發(fā)生溢出,結(jié)果正確! 帶符號(hào):sum= -103,因?yàn)镺F=1,故發(fā)生溢出,結(jié)果錯(cuò)誤! 2021-6-20 整數(shù)減法舉例整數(shù)減法舉例 -7- 6 = -7 + (-6) = +3 -3 - 5 = - 3 + (- 5) = - 8 9 - 6 = 3 13 - 5 = 8 1 1+ 0 00 1 1 1100 1 1 10 1 11 1 00 0 1 0 0 0 11 11 帶符號(hào) (1) 最高位和次高位的進(jìn)位不同 溢出: (2) 和的符號(hào)位和加數(shù)的符
20、號(hào)位不同 X 做減法以比較大小,規(guī)則: Unsigned: CF=0時(shí),大于 Signed:OF=SF時(shí),大于 OF=0、ZF=0、 SF=1、借位CF=0 OF=1、ZF=0 SF=0、借位CF=0 驗(yàn)證:96,故CF=0;135,故CF=0 驗(yàn)證:-76,故OFSF -3=Eb ) A*B =(Ma * Mb).2Ea+Eb A/B =(Ma / Mb).2Ea-Eb 上述運(yùn)算結(jié)果可能出現(xiàn)以下幾種情況:上述運(yùn)算結(jié)果可能出現(xiàn)以下幾種情況: 階碼上溢:階碼上溢:一個(gè)正指數(shù)超過(guò)了最大允許值一個(gè)正指數(shù)超過(guò)了最大允許值 =+/-/溢出溢出 階碼下溢:階碼下溢:一個(gè)負(fù)指數(shù)超過(guò)了最小允許值一個(gè)負(fù)指數(shù)超過(guò)
21、了最小允許值 =+0/-0 尾數(shù)溢出:尾數(shù)溢出:最高有效位有進(jìn)位最高有效位有進(jìn)位 =右規(guī)右規(guī) 非規(guī)格化尾數(shù):非規(guī)格化尾數(shù):數(shù)值部分高位為數(shù)值部分高位為0 =左規(guī)左規(guī) 右規(guī)或?qū)﹄A時(shí),右規(guī)或?qū)﹄A時(shí),右段右段有效位丟失有效位丟失 =尾數(shù)舍入尾數(shù)舍入 IEEE建議實(shí)現(xiàn)時(shí)為每種異常情況提供一個(gè)建議實(shí)現(xiàn)時(shí)為每種異常情況提供一個(gè)自陷允許位自陷允許位。若某異常對(duì)應(yīng)。若某異常對(duì)應(yīng) 的位為的位為1,則發(fā)生相應(yīng)異常時(shí),就調(diào)用一個(gè)特定的異常處理程序執(zhí)行。,則發(fā)生相應(yīng)異常時(shí),就調(diào)用一個(gè)特定的異常處理程序執(zhí)行。 SP最大指數(shù)為多少?最大指數(shù)為多少?127! SP最小指數(shù)為多少?最小指數(shù)為多少? -126! 運(yùn)算過(guò)程中添加
22、保護(hù)位運(yùn)算過(guò)程中添加保護(hù)位 尾數(shù)溢出,結(jié)果不一定溢出尾數(shù)溢出,結(jié)果不一定溢出 1.5+1.5=? 1.5-1.0=? 2021-6-20 IEEE754標(biāo)準(zhǔn)規(guī)定的五種異常情況標(biāo)準(zhǔn)規(guī)定的五種異常情況 無(wú)效運(yùn)算(無(wú)意義)無(wú)效運(yùn)算(無(wú)意義) 運(yùn)算時(shí)有一個(gè)數(shù)是非有限數(shù),如:運(yùn)算時(shí)有一個(gè)數(shù)是非有限數(shù),如: 加加 / 減減、0 x 、 /等等 結(jié)果無(wú)效,如:結(jié)果無(wú)效,如: 源操作數(shù)是源操作數(shù)是NaN、0/0、x REM 0、 REM y 等等 除以除以0(即:無(wú)窮大)(即:無(wú)窮大) 數(shù)太大(階碼上溢)數(shù)太大(階碼上溢): 對(duì)于對(duì)于SP,指階碼,指階碼 E 1111 1110 (指數(shù)大于(指數(shù)大于127)
23、數(shù)太小(階碼下溢)數(shù)太?。A碼下溢) : 對(duì)于對(duì)于SP,指階碼,指階碼 E 0000 0001(指數(shù)小于(指數(shù)小于-126 ) 結(jié)果不精確(舍入時(shí)引起),例如結(jié)果不精確(舍入時(shí)引起),例如1/3,1/10等不能精確表示成浮點(diǎn)數(shù)等不能精確表示成浮點(diǎn)數(shù) 上述情況硬件可以捕捉到,因此這些異??稍O(shè)定讓硬件處理,也可設(shè)定上述情況硬件可以捕捉到,因此這些異??稍O(shè)定讓硬件處理,也可設(shè)定 讓軟件處理。讓硬件處理時(shí),稱(chēng)為硬件陷阱。讓軟件處理。讓硬件處理時(shí),稱(chēng)為硬件陷阱。 注:硬件陷阱:事先設(shè)定好是否要進(jìn)行硬件處理(即挖一個(gè)陷阱),當(dāng)出注:硬件陷阱:事先設(shè)定好是否要進(jìn)行硬件處理(即挖一個(gè)陷阱),當(dāng)出 現(xiàn)相應(yīng)異常時(shí)
24、,就由硬件自動(dòng)進(jìn)行相應(yīng)的異常處理(掉入陷阱)?,F(xiàn)相應(yīng)異常時(shí),就由硬件自動(dòng)進(jìn)行相應(yīng)的異常處理(掉入陷阱)。 2021-6-20 浮點(diǎn)數(shù)加浮點(diǎn)數(shù)加/減運(yùn)算減運(yùn)算 u十進(jìn)制科學(xué)計(jì)數(shù)法的加法例子十進(jìn)制科學(xué)計(jì)數(shù)法的加法例子 0.123 105 + 0. 560 102 其計(jì)算過(guò)程為:其計(jì)算過(guò)程為: 0.123 105 + 0.560 102 = 0.123 105 + 0.000560 105 =(0.123 + 0.00056) 105 = 0.12356 105 =0.124 105 u“對(duì)階對(duì)階”操作:操作:目的是使兩數(shù)階碼相等目的是使兩數(shù)階碼相等 小階向大階看齊,階小的那個(gè)數(shù)的尾數(shù)右移,右移位數(shù)
25、等于兩個(gè)小階向大階看齊,階小的那個(gè)數(shù)的尾數(shù)右移,右移位數(shù)等于兩個(gè) 階碼差的絕對(duì)值階碼差的絕對(duì)值 IEEE 754尾數(shù)右移時(shí),要將隱含的尾數(shù)右移時(shí),要將隱含的“1”移到小數(shù)部分,高位補(bǔ)移到小數(shù)部分,高位補(bǔ)0, 移出的低位保留到特定的移出的低位保留到特定的“附加位附加位”上上 進(jìn)行尾數(shù)加減運(yùn)算前,必須進(jìn)行尾數(shù)加減運(yùn)算前,必須“對(duì)階對(duì)階”!最后還要考慮舍入最后還要考慮舍入 計(jì)算機(jī)內(nèi)部的二進(jìn)制運(yùn)算也一樣!計(jì)算機(jī)內(nèi)部的二進(jìn)制運(yùn)算也一樣! 2021-6-20 浮點(diǎn)數(shù)加浮點(diǎn)數(shù)加/減運(yùn)算減運(yùn)算-對(duì)階對(duì)階 問(wèn)題:?jiǎn)栴}:IEEE754 SP格式的偏置常數(shù)是格式的偏置常數(shù)是127,這會(huì)不會(huì)影響階碼運(yùn)算,這會(huì)不會(huì)影響
26、階碼運(yùn)算 電路的復(fù)雜度?電路的復(fù)雜度? 對(duì)計(jì)算對(duì)計(jì)算ExEy補(bǔ) 補(bǔ) ( (mod 2n) 沒(méi)有影響沒(méi)有影響 E補(bǔ) 補(bǔ)= 256+ExEy=256+127+Ex (127+Ey) = 256 + Ex移 移 Ey移移 = Ex移移+Ey移移補(bǔ)補(bǔ) (mod 256) 通過(guò)計(jì)算通過(guò)計(jì)算 E補(bǔ) 補(bǔ)來(lái)判斷兩數(shù)的階差: 來(lái)判斷兩數(shù)的階差: E補(bǔ) 補(bǔ)= ExEy補(bǔ)補(bǔ)= Ex移移 + Ey移移補(bǔ)補(bǔ) (mod 2n) 問(wèn)題:在問(wèn)題:在 E為何值時(shí)無(wú)法根據(jù)為何值時(shí)無(wú)法根據(jù) E補(bǔ) 補(bǔ)來(lái)判斷階差? 來(lái)判斷階差? 問(wèn)題:如何對(duì)階?問(wèn)題:如何對(duì)階? 溢出時(shí)!溢出時(shí)! 例如,例如,4位移碼,位移碼,Ex=7,Ey=-7,則
27、,則 E補(bǔ) 補(bǔ)=1111+1111=1110, , E Xe,則結(jié)果的階碼為,則結(jié)果的階碼為Ye) (2) 對(duì)階:將對(duì)階:將Xm右移右移e位,尾數(shù)變?yōu)槲?,尾?shù)變?yōu)?Xm*2Xe-Ye(保留右移部分:附加位)(保留右移部分:附加位) (3) 尾數(shù)加減:尾數(shù)加減: Xm*2Xe-Ye Ym (4) 規(guī)格化:規(guī)格化: 當(dāng)尾數(shù)高位為當(dāng)尾數(shù)高位為0,則需左規(guī):,則需左規(guī):尾數(shù)左移一次,階碼減尾數(shù)左移一次,階碼減1,直到,直到MSB為為1 每次階碼減每次階碼減1后要判斷階碼是否下溢(比最小可表示的階碼還要小)后要判斷階碼是否下溢(比最小可表示的階碼還要?。?當(dāng)尾數(shù)最高位有進(jìn)位,需右規(guī):當(dāng)尾數(shù)最高位有進(jìn)位,
28、需右規(guī):尾數(shù)右移一次,階碼加尾數(shù)右移一次,階碼加1,直到,直到MSB為為1 每次階碼加每次階碼加1后要判斷階碼是否上溢(比最大可表示的階碼還要大后要判斷階碼是否上溢(比最大可表示的階碼還要大) (5) 如果尾數(shù)比規(guī)定位數(shù)長(zhǎng),則需考慮舍入(有多種舍入方式)如果尾數(shù)比規(guī)定位數(shù)長(zhǎng),則需考慮舍入(有多種舍入方式) (6) 若若運(yùn)算結(jié)果尾數(shù)運(yùn)算結(jié)果尾數(shù)是是0,則需要將階碼也置,則需要將階碼也置0。為什么?。為什么? 階碼溢出異常處理:階碼上溢,則結(jié)果溢出;階碼下溢,則結(jié)果為階碼溢出異常處理:階碼上溢,則結(jié)果溢出;階碼下溢,則結(jié)果為0 尾數(shù)為尾數(shù)為0說(shuō)明結(jié)果應(yīng)該為說(shuō)明結(jié)果應(yīng)該為0(階碼和尾數(shù)為全(階碼和尾
29、數(shù)為全0)。)。 2021-6-20 浮點(diǎn)數(shù)加法運(yùn)算舉例浮點(diǎn)數(shù)加法運(yùn)算舉例 Example:用二進(jìn)制形式計(jì)算:用二進(jìn)制形式計(jì)算 0.5 +( 0.4375) =? 對(duì)對(duì) 階階: -1.110 x 2-2 -0.111 x 2-1 加加 減減: 1.000 x 2-1 +( -0.111 x 2-1 ) = 0.001 x 2-1 規(guī)格化規(guī)格化: 0.001 x 2-1 1.000 x 24 判溢出判溢出: 無(wú)無(wú) 解:解:0.5 = 1.000 x 2-1, - 0.4375 = -1.110 x 2-2 結(jié)果為:結(jié)果為: 1.000 x 24 = 0.0001000 = 1/16 = 0.06
30、25 問(wèn)題:為何問(wèn)題:為何IEEE 754 加減運(yùn)算右規(guī)時(shí)最多只需一次?加減運(yùn)算右規(guī)時(shí)最多只需一次? 因?yàn)榧词故莾蓚€(gè)最大的尾數(shù)相加,得到的和的尾數(shù)也不會(huì)達(dá)到因?yàn)榧词故莾蓚€(gè)最大的尾數(shù)相加,得到的和的尾數(shù)也不會(huì)達(dá)到4 4, 故尾數(shù)的整數(shù)部分最多有兩位,保留一個(gè)隱含的故尾數(shù)的整數(shù)部分最多有兩位,保留一個(gè)隱含的“1 1”后,最多只后,最多只 有一位被右移到小數(shù)部分。有一位被右移到小數(shù)部分。 2021-6-20 IEEE 754 浮點(diǎn)數(shù)加法運(yùn)算浮點(diǎn)數(shù)加法運(yùn)算 在計(jì)算機(jī)內(nèi)部執(zhí)行上述運(yùn)算時(shí),必須解決哪些問(wèn)題?在計(jì)算機(jī)內(nèi)部執(zhí)行上述運(yùn)算時(shí),必須解決哪些問(wèn)題? (1) 如何表示?如何表示? (2) 如何判斷階碼的
31、大???求如何判斷階碼的大???求E補(bǔ) 補(bǔ)=? ? (3) 對(duì)階后尾數(shù)的隱含位如何處理?對(duì)階后尾數(shù)的隱含位如何處理? (4) 如何進(jìn)行尾數(shù)加減?如何進(jìn)行尾數(shù)加減? (5) 何時(shí)需要規(guī)格化,如何規(guī)格化?何時(shí)需要規(guī)格化,如何規(guī)格化? (6) 如何如何舍入舍入? (7) 如何判斷溢出?如何判斷溢出? 用用IEEE754標(biāo)準(zhǔn)!標(biāo)準(zhǔn)! 右移到數(shù)值部分,高位補(bǔ)右移到數(shù)值部分,高位補(bǔ) 0,保留移出低位部分保留移出低位部分 隱藏位還原后,按原碼進(jìn)行加隱藏位還原后,按原碼進(jìn)行加 減運(yùn)算,附加位一起運(yùn)算減運(yùn)算,附加位一起運(yùn)算 1x .xxx 形式時(shí),則右規(guī)形式時(shí),則右規(guī): 尾數(shù)右移尾數(shù)右移1位位, 階碼加階碼加1 0
32、.001xx 形式時(shí),則左規(guī)形式時(shí),則左規(guī): 尾數(shù)左移尾數(shù)左移k位位, 階碼減階碼減k 最終須把附加位去掉,此時(shí)需考慮舍最終須把附加位去掉,此時(shí)需考慮舍 入(入(IEEE754有四種舍入方式)有四種舍入方式) 若最終階碼為全若最終階碼為全1,則上溢;若尾數(shù)為全,則上溢;若尾數(shù)為全0,則下溢,則下溢 2021-6-20 已知已知x=0.5, y=-0.4375, 求求x+y=? (用用IEEE754標(biāo)準(zhǔn)單精度格式計(jì)算標(biāo)準(zhǔn)單精度格式計(jì)算) 解解: x=0.5=1/2=(0.100.0)2=(1.00.0)2x2-1 y=-0.4325=(-0.01110.0)2=(-1.110.0)2x2-2 x
33、浮 浮=0 01111110,000 y浮浮=1 01111101,1100 對(duì)階對(duì)階: E補(bǔ)補(bǔ)=0111 1110 + 1000 0011=0000 0001,E=1 故故對(duì)對(duì)y進(jìn)行對(duì)階進(jìn)行對(duì)階:y浮浮=1 0111 1110 11100(高位補(bǔ)隱藏位高位補(bǔ)隱藏位) 尾數(shù)相加:尾數(shù)相加:01.0000.0 + (10.1110.0) = 00.001000 (原碼加法,最左邊一位為符號(hào)位,符號(hào)位分開(kāi)處理原碼加法,最左邊一位為符號(hào)位,符號(hào)位分開(kāi)處理) 左規(guī):左規(guī): +(0.001000)2x2-1=+(1.000)2x2-4 (階碼減 階碼減3,實(shí)際上是加了三次,實(shí)際上是加了三次1111111
34、1) x+y浮浮=0 0111 1011 000 x+y=(1.0)2x2-4=1/16=0.0625 IEEE 754 浮點(diǎn)數(shù)加法運(yùn)算舉例浮點(diǎn)數(shù)加法運(yùn)算舉例 問(wèn)題:尾數(shù)加法器問(wèn)題:尾數(shù)加法器 最多需要多少位?最多需要多少位? 1+1+23+3=28位位 2021-6-20 浮點(diǎn)加浮點(diǎn)加/減法器減法器 Sx 右右 移移 Ex Mx Sy Ey My 小小ALU 大大ALU 階碼相減階碼相減 左移左移 或或 右移右移 舍舍 入入 階階 差差 控制邏輯控制邏輯 Sb Eb Mb 階小的數(shù)的階小的數(shù)的 尾數(shù)右移尾數(shù)右移 尾數(shù)加尾數(shù)加/減減 規(guī)格化規(guī)格化 舍入舍入 階碼增階碼增/減減 可用流水線方式實(shí)
35、現(xiàn)!可用流水線方式實(shí)現(xiàn)! 2021-6-20 浮點(diǎn)數(shù)乘浮點(diǎn)數(shù)乘/除法基本要點(diǎn)除法基本要點(diǎn) u浮點(diǎn)數(shù)乘法:浮點(diǎn)數(shù)乘法:A*B =(Ma * Mb).2 Ea+Eb u浮點(diǎn)數(shù)除法:浮點(diǎn)數(shù)除法:A/B =(Ma / Mb).2 Ea-Eb 浮點(diǎn)數(shù)乘浮點(diǎn)數(shù)乘 / 除法步驟除法步驟 (Xm、Ym分別是分別是X和和Y尾數(shù)原碼,尾數(shù)原碼, Xe和和Ye 分別是分別是X和和Y階移碼階移碼 ) (1) 求階求階: Xe + Ye + 127 (2) 尾數(shù)相乘除:尾數(shù)相乘除: Xm */Ym (兩個(gè)形為(兩個(gè)形為1.xxx的數(shù)相乘的數(shù)相乘/除)除) (3) 兩數(shù)符號(hào)相同,結(jié)果為正;兩數(shù)符號(hào)相異,結(jié)果為負(fù);兩數(shù)符號(hào)
36、相同,結(jié)果為正;兩數(shù)符號(hào)相異,結(jié)果為負(fù); (4) 當(dāng)尾數(shù)高位為當(dāng)尾數(shù)高位為0,需左規(guī);當(dāng)尾數(shù)最高位有進(jìn)位,需右規(guī)。,需左規(guī);當(dāng)尾數(shù)最高位有進(jìn)位,需右規(guī)。 (5) 如果尾數(shù)比規(guī)定的長(zhǎng),則需考慮舍入。如果尾數(shù)比規(guī)定的長(zhǎng),則需考慮舍入。 (6) 若尾數(shù)是若尾數(shù)是0,則需要將階碼也置,則需要將階碼也置0。 (7) 階碼溢出判斷階碼溢出判斷 浮點(diǎn)數(shù)尾數(shù)采用浮點(diǎn)數(shù)尾數(shù)采用 原碼乘原碼乘/除運(yùn)算。除運(yùn)算。 問(wèn)題問(wèn)題1:乘法運(yùn)算結(jié)果最多左規(guī)幾次?最多右規(guī)幾次?:乘法運(yùn)算結(jié)果最多左規(guī)幾次?最多右規(guī)幾次? 不需左規(guī)!最多右規(guī)不需左規(guī)!最多右規(guī)1次!次! 問(wèn)題問(wèn)題2:除法呢?:除法呢? 左規(guī)次數(shù)不定!不需右規(guī)!左規(guī)
37、次數(shù)不定!不需右規(guī)! 2021-6-20 求階碼的和、差求階碼的和、差 設(shè)設(shè)Ex和和Ey分別是兩個(gè)操作數(shù)的階碼,分別是兩個(gè)操作數(shù)的階碼,Eb是結(jié)果的階碼,則:是結(jié)果的階碼,則: 階碼加法公式為:階碼加法公式為: Eb Ex+Ey+129 ( mod 28) E1+E2移移 = 127 + E1+ E2 = 127 + E1 + 127 + E2 127 = E1移移 + E2移移 127 = E1移移 + E2移移 +127 補(bǔ)補(bǔ) = E1移移 + E2移移 +10000001B( mod 28) 階碼減法公式為:階碼減法公式為: Eb Ex+Ey補(bǔ)補(bǔ)+127 ( mod 28) E1 E2移
38、移 = 127 + E1 E2 = 127+E1(127+E2)+127 = E1移移E2移移 +127 = E1移移+E2移移補(bǔ)補(bǔ)+01111111B( mod 28) 2021-6-20 舉例舉例 例:若兩個(gè)階碼分別為例:若兩個(gè)階碼分別為10和和-5,求,求10+(-5)和和10-(-5)的移碼。的移碼。 解:解:Ex = 127+10 =137=1000 1001B Ey = 127+ (5) = 122 = 0111 1010B Ey 補(bǔ)補(bǔ)= 1000 0110B 將將Ex和和Ey代入上述公式,得:代入上述公式,得: Eb = Ex+Ey +129 = 1000 1001 + 0111
39、 1010 +1000 0001 = 1000 0100B = 132 (mod 28) 其階碼的和為其階碼的和為132 127 = 5,正好等于,正好等于10 + (5) = 5。 Eb = Ex+Ey補(bǔ)補(bǔ)+127 = 1000 1001 + 1000 0110 +0111 1111 = 1000 1110B = 142 (mod 28) 其階碼的差為其階碼的差為142127 = 15,正好等于,正好等于10 (5) = 15。 BACK 設(shè)設(shè)Ex和和Ey分別是兩個(gè)操作數(shù)階碼的移碼,分別是兩個(gè)操作數(shù)階碼的移碼,Eb是結(jié)果階碼的移碼表示是結(jié)果階碼的移碼表示 2021-6-20 Extra Bi
40、ts(附加位附加位) Floating Point numbers are like piles of sand; every time you move one you lose a little sand, but you pick up a little dirt.“ “浮點(diǎn)數(shù)就像一堆沙,每動(dòng)一次就會(huì)失去一點(diǎn)浮點(diǎn)數(shù)就像一堆沙,每動(dòng)一次就會(huì)失去一點(diǎn)沙沙,并撿回一點(diǎn),并撿回一點(diǎn) 臟臟 ” 如何才能使失去的如何才能使失去的“沙沙” 和撿回的和撿回的“臟臟”都盡量少呢?都盡量少呢? 加多少附加位才合適?加多少附加位才合適? IEEE754規(guī)定規(guī)定: 中間結(jié)果須在右邊加中間結(jié)果須在右邊加2個(gè)附加位
41、個(gè)附加位 (guard 作為舍入的依據(jù)。作為舍入的依據(jù)。 BACK 在后面加附加位!在后面加附加位! 無(wú)法給出準(zhǔn)確的答案!無(wú)法給出準(zhǔn)確的答案! 2021-6-20 舍入舍入 舉例:十進(jìn)制數(shù),最終有效位數(shù)為舉例:十進(jìn)制數(shù),最終有效位數(shù)為 3,采用兩位附加位(,采用兩位附加位(G、R)。)。 2.3400 * 10 0.0253 * 10 2.3653 * 10 2 2 2 IEEE Standard: four rounding modes(用圖說(shuō)明用圖說(shuō)明) round to nearest (default) round towards plus infinity (always round
42、 up) round towards minus infinity (always round down) round towards 0 round to nearest: round digit 1/2 then round up (add 1 to ULP) = 1/2 then round to nearest even digit 可以證明默認(rèn)方式得到的平均誤差最小可以證明默認(rèn)方式得到的平均誤差最小。 注:注:ULP=units in the last place. 簡(jiǎn)稱(chēng)為就近舍入到偶數(shù)簡(jiǎn)稱(chēng)為就近舍入到偶數(shù) 問(wèn)題:若沒(méi)有舍入位,采用就近問(wèn)題:若沒(méi)有舍入位,采用就近 舍入到偶數(shù),則結(jié)果
43、是什么?舍入到偶數(shù),則結(jié)果是什么? 結(jié)果為結(jié)果為2.36!精度沒(méi)有!精度沒(méi)有2.37高!高! 2021-6-20 IEEE 754的舍入方式的說(shuō)明的舍入方式的說(shuō)明 ( Z1和和Z2分別是結(jié)果分別是結(jié)果Z的最近的可表示的左、右兩個(gè)數(shù)的最近的可表示的左、右兩個(gè)數(shù) ) (1) 就近舍入:就近舍入:舍入為最近可表示的數(shù)舍入為最近可表示的數(shù) 非中間值:非中間值:0舍舍1入入; 中間值:中間值:強(qiáng)迫結(jié)果為偶數(shù)強(qiáng)迫結(jié)果為偶數(shù)-慢慢 (2) 朝朝+方向舍入方向舍入:舍入為舍入為Z2(正向舍入正向舍入) (3) 朝朝-方向舍入方向舍入:舍入為舍入為Z1(負(fù)向舍入負(fù)向舍入) (4) 朝朝0方向舍入:方向舍入:截去
44、。正數(shù):取截去。正數(shù):取Z1; 負(fù)數(shù):取負(fù)數(shù):取Z2 00 ZZ1Z2 例如:附加位為例如:附加位為 01:舍:舍 11:入:入 10:(強(qiáng)迫結(jié)果為偶數(shù)強(qiáng)迫結(jié)果為偶數(shù)) 例:例:1.110111 1.1110; 1.110101 1.1101; 1.110110 1.1110; 1.111110 10.0000; 2021-6-20 IEEE 754建議可通過(guò)在舍入位后再引入粘位建議可通過(guò)在舍入位后再引入粘位“ sticky bit”增強(qiáng)精度增強(qiáng)精度 加減運(yùn)算對(duì)階過(guò)程中,若階碼較小的數(shù)的尾數(shù)右移時(shí),舍入位之后加減運(yùn)算對(duì)階過(guò)程中,若階碼較小的數(shù)的尾數(shù)右移時(shí),舍入位之后 有非有非0數(shù),則可設(shè)置數(shù),
45、則可設(shè)置sticky bit。 舉例:舉例: 1.24 x 104 + 5.03 x 101 分別采用一位、二位、三位附加位時(shí),分別采用一位、二位、三位附加位時(shí), 結(jié)果各是多少?(就近舍入到偶數(shù))結(jié)果各是多少?(就近舍入到偶數(shù)) 尾數(shù)精確結(jié)果為尾數(shù)精確結(jié)果為1.24503, 所以分別為:所以分別為: 1.24,1.24,1.25 BACK IEEE 754的舍入方式說(shuō)明的舍入方式說(shuō)明 2021-6-20 溢出判斷溢出判斷 以下情況下,可能會(huì)導(dǎo)致階碼溢出以下情況下,可能會(huì)導(dǎo)致階碼溢出 左規(guī)(階碼左規(guī)(階碼 - 1)時(shí))時(shí) -左規(guī)(左規(guī)(- 1)時(shí):先判斷階碼是否為全)時(shí):先判斷階碼是否為全0,若
46、是,則直接,若是,則直接 置階碼下溢;否則,階碼減置階碼下溢;否則,階碼減1后判斷階碼是否為全后判斷階碼是否為全0,若,若 是,則階碼下溢。是,則階碼下溢。 右規(guī)(階碼右規(guī)(階碼 +1)時(shí))時(shí) -右規(guī)(右規(guī)(+ 1)時(shí),先判斷階碼是否為全)時(shí),先判斷階碼是否為全1,若是,則直接,若是,則直接 置階碼上溢;否則,階碼加置階碼上溢;否則,階碼加1后判斷階碼是否為全后判斷階碼是否為全1,若,若 是,則階碼上溢。是,則階碼上溢。 問(wèn)題:機(jī)器內(nèi)部如何減問(wèn)題:機(jī)器內(nèi)部如何減1? +-1補(bǔ) 補(bǔ) = + 111 2021-6-20 舉例舉例 例:若例:若Eb = 0000 0001,則左規(guī)一次后,結(jié)果的階碼,
47、則左規(guī)一次后,結(jié)果的階碼 Eb = ? 解:解:Eb = Eb+-1補(bǔ) 補(bǔ) = 0000 0001 + 1111 1111 = 0000 0000 階碼下溢! 階碼下溢! 例:若例:若Ex=1111 1110,Ey=1000 0000,則乘法運(yùn)算時(shí),結(jié)果的階碼,則乘法運(yùn)算時(shí),結(jié)果的階碼 Eb=? 解:解:Eb = Ex+Ey+129 = 1111 1110 + 1000 0000 + 1000 0001 = 1111 1111 階碼上溢!階碼上溢! 以下情況下,可能會(huì)導(dǎo)致階碼溢出(續(xù))以下情況下,可能會(huì)導(dǎo)致階碼溢出(續(xù)) 乘法運(yùn)算求階碼的和時(shí)乘法運(yùn)算求階碼的和時(shí) -若若Ex和和Ey最高位皆最高
48、位皆1,而,而Eb最高位是最高位是0或或Eb為全為全1,則階碼上溢,則階碼上溢 -若若Ex和和Ey最高位皆最高位皆0,而,而Eb最高位是最高位是1或或Eb為全為全0,則階碼下溢,則階碼下溢 除法運(yùn)算求階碼的差時(shí)除法運(yùn)算求階碼的差時(shí) -若若Ex的最高位是的最高位是1,Ey的最高位是的最高位是0,Eb的最高位是的最高位是0或或Eb為全為全1 ,則階碼上溢。,則階碼上溢。 -若若Ex的最高位是的最高位是0,Ey的最高位是的最高位是1,Eb的最高位是的最高位是1或或Eb為全為全0 ,則階碼下溢。,則階碼下溢。 2021-6-20 浮點(diǎn)數(shù)舍入舉例浮點(diǎn)數(shù)舍入舉例 例:將同一實(shí)數(shù)分別賦值給單精度和雙精度類(lèi)型
49、變量,然后打印輸出。 #include main() float a; double b; a = 123456.789e4; b = 123456.789e4; printf(“%f/n%f/n”,a,b); 運(yùn)行結(jié)果如下: 1234567936.000000 1234567890.000000 問(wèn)題:為什么同一個(gè)實(shí)數(shù)賦值給float型變量 和double型變量,輸出結(jié)果會(huì)有所不同呢? 為什么float情況下輸出的結(jié)果 會(huì)比原來(lái)的大?這到底有沒(méi)有 根本性原因還是隨機(jī)發(fā)生的? 為什么會(huì)出現(xiàn)這樣的情況? float可精確表示7個(gè)十 進(jìn)制有效數(shù)位,后面的 數(shù)位是舍入后的結(jié)果, 舍入后的值可能會(huì)更大
50、, 也可能更小 2021-6-20 第三講小結(jié)第三講小結(jié) u浮點(diǎn)運(yùn)算指令(浮點(diǎn)運(yùn)算指令( 以以MIPS為參考為參考 ) u浮點(diǎn)數(shù)的表示(浮點(diǎn)數(shù)的表示(IEEE754標(biāo)準(zhǔn))標(biāo)準(zhǔn)) 單精度單精度SP(float)和雙精度)和雙精度DP(double) - 規(guī)格化數(shù)規(guī)格化數(shù)(SP):階碼:階碼1254,尾數(shù)最高位隱含為,尾數(shù)最高位隱含為1 - 0(階為全階為全0,尾為全,尾為全0) - (階為全階為全1,尾為全,尾為全0) - NaN(階為全階為全0,尾為非,尾為非0) - 非規(guī)數(shù)非規(guī)數(shù)(階為全階為全1,尾為非,尾為非0) u浮點(diǎn)數(shù)加減運(yùn)算浮點(diǎn)數(shù)加減運(yùn)算 對(duì)階、尾數(shù)加減、規(guī)格化(上溢對(duì)階、尾數(shù)加減、規(guī)格化(上溢/下溢處理)、舍入下溢處理)、舍入 u浮點(diǎn)數(shù)乘除運(yùn)算浮點(diǎn)數(shù)乘除運(yùn)算 求階、尾數(shù)乘除、規(guī)格化(上溢求階、尾數(shù)乘除、規(guī)格化(上溢/下溢處理)下溢處理) 、舍入、舍入 u浮點(diǎn)數(shù)的精度問(wèn)題浮點(diǎn)數(shù)的精度問(wèn)題 中間結(jié)果加保護(hù)位、舍入位(和粘位)中間結(jié)果加保護(hù)位、舍入位(和粘位
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度環(huán)??萍脊疚膯T聘用及綠色創(chuàng)新協(xié)議
- 二零二五年度農(nóng)村私人土地租賃與特色養(yǎng)殖合作合同
- 二零二五年度跨境電商金融服務(wù)商務(wù)協(xié)議書(shū)
- 小微企業(yè)市場(chǎng)開(kāi)拓的營(yíng)銷(xiāo)推廣計(jì)劃
- 電商平臺(tái)用戶(hù)行為規(guī)范及免責(zé)聲明
- 車(chē)位抵押借款合同協(xié)議
- 企業(yè)信息化改造升級(jí)合作協(xié)議
- 設(shè)備采購(gòu)說(shuō)明文書(shū)模板
- 提高團(tuán)隊(duì)協(xié)作效率的行動(dòng)計(jì)劃
- 物流運(yùn)輸安全及免責(zé)承諾書(shū)
- (三級(jí))工業(yè)機(jī)器人運(yùn)用與維護(hù)理論考試復(fù)習(xí)題庫(kù)(含答案)
- 2024年廣東省公務(wù)員錄用考試《行測(cè)》真題及解析
- 高中英語(yǔ)必背3500單詞表(完整版)
- 房產(chǎn)中介居間服務(wù)合同模板樣本
- 海洋工程裝備保險(xiǎn)研究
- 2024年廣東省深圳市中考英語(yǔ)試題含解析
- GB/T 16288-2024塑料制品的標(biāo)志
- 麻風(fēng)病防治知識(shí)課件
- 3素炒圓白菜 教案
- 透析患者營(yíng)養(yǎng)不良護(hù)理
- 學(xué)生消防安全常識(shí)問(wèn)卷及答案
評(píng)論
0/150
提交評(píng)論