經統計,某機器14條指令的使用頻度分別為:0.01,0.15,0.12,0.03,0.02,0.04,0.02,0.04,0.01,0.13,0.15,0.14,0.11,0.03。分別求出用等長碼、Huffman碼、只有兩種碼長的擴展操作碼3種編碼方式的操作碼平均碼長。
解:
等長操作碼的平均碼長=4位 Huffman編碼的平均碼長=3.38位 只有兩種碼長的擴展操作碼的平均碼長=3.4位。
9.若某機要求:三地址指令4條,單地址指令255條,零地址指令16條。設指令字長為12位.每個
地址碼長為3位。問能否以擴展操作碼為其編碼?如果其中單地址指令為254條呢?說明其理由。
答:①不能用擴展碼為其編碼。
∵指令字長12位,每個地址碼占3位;
∴三地址指令最多是2^(12-3-3-3)=8條, 現三地址指令需4條,
∴可有4條編碼作為擴展碼,
∴單地址指令最多為4×2^3×2^3=2^8=256條,
現要求單地址指令255條,∴可有一條編碼作擴展碼
∴零地址指令最多為1×2^3=8條
不滿足題目要求
∴不可能以擴展碼為其編碼。
②若單地址指令254條,可以用擴展碼為其編碼。
∵依據①中推導,單地址指令中可用2條編碼作為擴展碼
∴零地址指令為2×2^3=16條,滿足題目要求
標簽:
上傳時間:
2015-04-30
上傳用戶:zhangyigenius
huffman完整源代碼C語言實現,有本人超級詳細解釋(看不懂你去跳樓吧)
算法設計:
1、對給定的n個權值{W1,W2,W3,...,Wi,...,Wn}構成n棵二叉樹的初始集合F={T1,T2,T3,...,Ti,...,Tn},其中每棵二叉樹Ti中只有一個權值為Wi的根結點,它的左右子樹均為空。(為方便在計算機上實現算法,一般還要求以Ti的權值Wi的升序排列。)
2、在F中選取兩棵根結點權值最小的樹作為新構造的二叉樹的左右子樹,新二叉樹的根結點的權值為其左右子樹的根結點的權值之和。
3、從F中刪除這兩棵樹,并把這棵新的二叉樹同樣以升序排列加入到集合F中。
4、重復二和三兩步,直到集合F中只有一棵二叉樹為止。
標簽:
huffman
C語言
源代碼
上傳時間:
2013-12-29
上傳用戶:ouyangtongze