三數組合爲一大整數且這一大數又能拆分成這三個數---算法實現

問題描述:

           將N1,N2,N3組合成N4,且能從N4中又能推出N1,N2,N3.

算法實現:

           假設N1,爲a位,N2爲b位,N3爲c位。那麼將這三個數組合成一數就需要知道每個十進制數存儲的大小,也就是它們轉換爲二進制數後的位數,具體求位數請參考本人的另一篇日誌(棧的應用---十進制數轉換爲其他進制的數)。在這裏分別假設N1,N2,N3轉換爲二進制後的二進制的位數爲n1,n2,n3,那麼要將這三個數組合成一個數,就需要n1+n2+n3這麼大的存儲空間。下列是轉換爲一個數的算法:

          N4=N1<<(n2+n3)|N2<<(n3)|N3

  將上述的N4轉換爲響應的數的算法爲:

           N3=N4&(2exp(n3)-1)

           N2=(N4>>n3)&(2exp(n2)-1)

           N1=(N4>>n2+n3)&(2exp(n1)-1)

此算法的應用:

     此算法簡單易實現,應用面非常廣,比如在學生管理系統中可以見學生的編號和學生年級和學院編號組合成一個編號。也可以將N1,N2,N3的關係包含在N4裏面表示一類數有什麼特性,比如N3有特性N1,N2等等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章