ç§ăŽăăă°ăŽĺ¤ăäźçľąăĺéăăŚăç§ăŻç°ĄĺăŞăżăšăŻăĺăăăăŽäťŁćżă˝ăŞăĽăźăˇă§ăłăŽ
é庌ăŤéˇăăŞăšăăčć
ŽăăăăăăŽăĄăŞăăăŤćčŹăăžăă
ĺç´ăŞăżăšăŻăŻćŹĄăŽă¨ăăă§ăăăă¤ăăšăăŞăźă ăăăăźăżăčŞăżĺăăĺ¤ăĺŻĺ¤ăăăć°ă§ă¨ăłăłăźăăăžăă ĺă
ăŽăă¤ăăăăˇăłăŻăźăăŞăŠăčŞăżĺăăžăă ăťă¨ăăŠăŽăăăťăăľă¨ĺ¤ăăŽăăă°ăŠăăłă°č¨čŞă§ç´ćĽăľăăźăăăăŚăăžăăăĺŻĺ¤ăăăéˇă§ĺ
Ľĺşĺăăĺ ´ĺăé常ăŻčŞĺă§ă˝ăŞăĽăźăˇă§ăłăĺŽčŁ
ăăĺż
čŚăăăăžăă
ç°ĄĺăŤčăăăžăăăăăćĺłă§ăŻăăă§ăă ĺéĄăŽćĺăŽĺĺ ăŻăăăŽćä˝ăăłăźăăăŻăçŠćĽľçăŤä˝żç¨ăăăă¨ă§ă-ăŻăăăĄă˘ăŞă¨I / Oă§ăŻăŞăč¨çŽăŤĺśéăăăžăă ăăăăŁăŚăĺăŤćŠč˝ăăă ăă§ăŞăăĺšćçăŞĺŽčŁ
ăĺż
čŚă§ăă ăăăŚăăŽéç¨ă§ăI / OăăăăĄăŞăłă°ăăăăăĄăźă¨ăłăĺŚçăC / C ++ă§ĺŽçžŠăăăăăăăˇăăăŽăăăăăăŻăăăžăăžăŞăăăťăăľă˘ăźăăăŻăăŁăăăăłăăăăˇăăăŽäťăŽćŠč˝ă¨ăŽăăĺăăçşçăăžăă
ăăŽć稿ă§ăŻă丝ăŤăŞăźăăźăĺŽčŁ
ăăăăžăăžăŞćšćłăŤçŚçšăĺ˝ăŚăžăă ĺŽéăăăă§čŞŹćăăăăšăŚăŽććłăŻč¨é˛é¨ĺăŤăĺć§ăŤéŠç¨ă§ăăžăăăă˘ăŤă´ăŞăşă ăŽăăŞă¨ăźăˇă§ăłăŽć°ă2ĺăŤăăăăŻăăăžăăă ăăăăŻĺĺăŤăăăžăă
čŞçąĺşŚ
ăĺŻĺ¤ăăăć°ăŽčŞăżĺăăăŻăăżăšăŻăŽčŞŹćăä¸ĺĺă§ăă ăăăăăă¤ăăŤăăăŻăăĺ¤ăăŽĺăĺ
ĽăĺŻč˝ăŞćšćłăăăăăăăăŽăăšăŚăŤçŹčŞăŽéˇćă¨çćăăăăžăăăăăŤă¤ăăŚăŻĺžă§čŞŹćăăžăă ăăăžă§ăŽéăăăăăŽéăă ăăčŚăŚăżăžăăăă
ăžăćĺăŤéčŚăŞé¸ćăčĄăĺż
čŚăăăăžă-ăăŁăźăŤăăŻăĺ
çMSBăăžăăŻăĺ
çLSBăăŽĺ˝˘ĺźă§ăăăŻăăăžăďźăćä¸ä˝ăăăă-ćä¸ä˝ăăăăăăłăćä¸ä˝ăăăă-ćä¸ä˝ăăăďźă ă¤ăžăăĺŽčŁ
ăăă
getbits
é˘ć°ăĺźăłĺşăăŚćŹĄăŽăłăźăăĺŽčĄăăă¨
a = getbits(4); b = getbits(3);
ć°ăăéăăăăăăăšăăŞăźă ăŽĺ ´ĺăĺăăă¤ăăă严ćšăŽĺ¤ăĺ俥ăăăă¨äşćłăăăžăăăăăŽăă¤ăă§ăŠăŽăăăŤé ĺşäťăăăăžăăďź MSBăăĄăźăšăăŽĺ˝˘ĺźă§ăăăŻăăăŚăăĺ ´ĺăăaăăŻMSBă§ĺ§ăžă4ăăăăĺ ćăăăbăăŻăaăăăăä˝ăăăă揥ăŽăšăăźă ăŤă¤ăŞăăăžăă
ăăŽăăăŤăăăăŤçŞĺˇăäťăăžăăLSBăŻ0ă§ăMSBăŤčżăĽăă¨ăĺ¤ăĺ˘ĺ ăăžăă ĺ¤ăăŽăłăłăăăšăă§ăŻăăăŽé ĺşăć¨ćşă§ăă LSB-firstăŻĺ寞ăŽçśćłă§ăăćĺăŽăăŁăźăŤăăŻăăă0ăĺăă揥ăŽăăŁăźăŤăăŤăŻĺ˘ĺ ăăăăăçŞĺˇăĺŤăžăăžăă
严ćšăŽĺ˝˘ĺźăŻăä¸čŹçăŞăăĄă¤ăŤĺ˝˘ĺźă§ä˝żç¨ăăăžăă ăă¨ăă°ăJPEGăŻăăăăšăăŞăźă ă§MSBăăĄăźăšă形ĺźăŽăăăăăăăłă°ă使ç¨ăăDEFLATEďźzipďźăŻLSBăăĄăźăšăă使ç¨ăăžăă
č§Łćąşăăĺż
čŚăăă揥ăŽčłŞĺăŻăĺ¤ăć°ăă¤ăăŤćĄĺźľăăăă¨ăăŤä˝ă辡ăăăă§ăă 5ăăăă§ă¨ăłăłăźăăăĺĽăŽcĺ¤ăăăă¨ăăžăă çľćă¨ăăŚä˝ăĺžăăăžăăďź ăă¤ăă§ăŻăŞă32ăăăăžăăŻ64ăăăăŽăŻăźăă§ĺ¤ăăăăŻăăăă¨ă厣č¨ăăăă¨ăŤăăăĺéĄăŽč§ŁćąşăăăăăŤé
ăăăăă¨ăă§ăăžăăăćçľçăŤăŻä˝ăăé¸ćăăĺż
čŚăăăăžăă ăăăŚăăăă§ç§ăăĄăŻçŞçśĺ¤ăăŽç°ăŞăé¸ćč˘ăŤç´é˘ăăŚăăăŽă§ăç§ăŻä¸ťčŚăŞçłčŤč
ăŽăżăć¤č¨ăăžăă
MSBăăĄăźăšăăăăăăăăłă°ăŻăMSBăăLSBă¸ăŽăcăăăăăăŁăźăŤăăŽĺ垊ă¨ăăŚčŞčăăăä¸ĺşŚăŤ1ăăăăă¤ćżĺ
Ľăăăžăă 1ăă¤ăăĺ
Ľĺăăăă揥ăŽăă¤ăăŤé˛ăżăžăă ăăăăăŁăźăŤăcăŤă¤ăăŚăăăăŽčŚĺăŤĺžăă¨ăăšăăŞăźă ăŽçľćă¨ăăŚăăăăăŻćŹĄăŽăšăăźă ăŤăŞăăžăă
ăăăăŽăŤăźăŤăŤĺžăă¨ăMSBăăăă大ăăŞć´ć°ăŤăăăŻăăŚăăă°ă¨ăłăăŁă˘ăłăŽé ĺşă§äżĺăăăă¨ă§ĺžăăăăŽă¨ĺă2ăă¤ăăŤăŞăăă¨ăŤćł¨ćăăŚăă ăăă 䝣ăăăŤLSBăćĺăŽăă¤ăăŤăăă4ă¤ăŽä¸ä˝ăăăă2çŞçŽăŽăă¤ăăŤăŞăăăăŤăcăăĺĺ˛ăăăă¨ăŤăăĺ ´ĺăăăăŻćŠč˝ăăžăăă ăăŽăăăŞä¸č˛Ťăăăăăăăăăłă°ăŤăźăŤăăčŞçśăŞăăŤăźăŤă¨ĺźăłăžăă
ăăĄăăăLSBăăĄăźăšăăăăăăăăłă°ăŤăŻçŹčŞăŽčŞçśăŞčŚĺăăăăžăă ăăăŻăLSBăăéĺ§ăăŚăăăăăă¨ăŤć°ăăĺ¤ăćżĺ
Ľăăăă¨ă§ć§ćăăăăăăčĄăă¨ăçľćă¨ăăŚćŹĄăŽăăăăšăăŞăźă ăĺĺžăăăžăă

LSBăăĄăźăšăăŽčŞçśăăăăłă°ăŻăLSBăăĄăźăšăăŽĺ¤§ăăŞć´ć°ă¸ăŽăăăăłă°ă¨ĺăăă¤ăăćäžăăăŞăăŤă¨ăłăăŁă˘ăłăŽăă¤ăé ăçśćăăžăă ăăăŤăĺçăŤăŻćăăăŞä¸ĺ¨ç¨ăăăăăžăăć°ăă¤ăăŽăcăăăŁăźăŤăăŽčŤççăŤĺ
ąĺ˝šăăăăăăłă°ăŻăăăŽĺçă§ăŻä¸éŁçśăŤčŚăăžăăăMSBăăĄăźăšăăŽăăăăłă°çťĺăŻäşćłăŠăăă§ăă ăăăăăăăŤăŻĺéĄăăăăžăăMSBăăĄăźăšăăŽçťĺă§ăŻăăăăăĺłăă塌ăŤĺ˘ĺ ăăé ĺşďźć¨ćşďźă§çŞĺˇäťăăăăă¤ăă塌ăăĺłăŤĺ˘ĺ ăăé ĺşă§çŞĺˇäťăăăžăďźăăăć¨ćşă§ăďźă
塌ĺ´ăŽĺăă¤ă
ăŤăăă0ďźLSBďźăćçťăăĺłĺ´ăŽăăă7ďźMSBďźăćçťăăă¨ăLSBăăĄăźăšăăăăăăăă§ä˝ă辡ăăăă示ăăžăă
ăăŽăăăŤćçťăăă¨ăĺ衯ăŻäşćłăŠăăăŤăŞăăžăă ăă¤ăăć°ĺ¤ă¨čăăă¨ăĺłĺ´ăŽMSBăŽä˝ç˝ŽăŻĺĽĺŚăŤčŚăăžăăă8ăăăăŽé
ĺă¨čăăă¨ăăăăťăŠĺĽĺŚă§ăŻăŞăăă¨ăăăăăžăďźĺŽéăŤăŻăăăăĺä˝ăŽI / OăčĄăă¨ăăŤăăăĺŚçăăžăďźă
ĺśçśăŤăăä¸é¨ăŽăăă°ă¨ăłăăŁă˘ăłă˘ăźăăăŻăăŁďźIBM POWERăŞăŠďźă§ăŻăăăăăŤćŹĄăŽăăăŤçŞĺˇăäťăăăăŚăăžă-ăăă0ăŻMSBăăăă31ďźăžăăŻ63ďźăŻLSBă§ăă ăăŽăăăŞăăˇăłă§ăăă0 = MSBăŽMSBăăĄăźăšăăăăăăăăłă°ăšăăźă ăä˝ćăăăăă0ăMSBăŤĺŻžĺżăăăăăŤçŹčŞăŽăăăăăŁăźăŤăăŤçŞĺˇăäťăăă¨ăăžăŁăăĺăăšăăźă ăĺžăăăžăďźăă ăăăăăŻĺ°ăç°ăŞăăă¨ăćĺłăăžăďź ďź ăăŽć¨ćşăŻăăăăă¨ăă¤ăăŽé ĺşăä¸č˛Ťć§ăŽăăăăŽăŤăăžăďźăăăŻčŻăăă¨ă§ăăďźăăăăă
kă 2
kăŽĺ¤ăŤä¸č´ăăăă¨ăăäžżĺŠăŞć¨ćşăĺŁăăžăďźĺŽĺ
¨ăŤčŻăă¨ăŻéăăžăăďźă
ăžăăăăă0ăMSBăŤăŞăăăăŤăăăăŽçŞĺˇăäťăç´ăă¨ăăčăăčłăççşăăăĺ ´ĺăŻăăăăăŽçŞĺˇäťăăĺ¤ć´ăăăŤăĺćč
ăŤăŞăă塌ĺ´ăŤĺ˘ĺ ăăăă¤ăă˘ăăŹăšăćçťă§ăăžăă ăžăăŻăă˘ăăŹăšăĺłăŤĺ˘ăăăžăăăăăăăŤç°ăŞăĺéč
ăŤăŞăăéăŽé ĺşă§ăă¤ăăšăăŞăźă ăč¨é˛ăăžăă ăăăăŽăŞăăˇă§ăłăŽăăăăăé¸ćăăă¨ă揥ăŽăšăăźă ăĺžăăăžăă

ăăăŻăă§ăŤćˇˇäšąăĺ§ăăŚăăăă¨ăçč§ŁăăŚăăăăăă§ĺć˘ăăžăăăăăă§ä˝ăéčŚăŞăă¨ăč¨ăăŞăăă°ăŞăăžăăďźăă¤ăăĺ俥ăăćšćłăŤé庌ăŤĺˇçăăŞăă§ăă ăăă ĺăŤčŚăçŽăčŻăăăă¨ăăŁăŚăăăăŞăăˇă§ăłăäťăŽăŞăăˇă§ăłăăăĺŞăăŚăăă¨ćăăăăŽăŻç°Ąĺă§ăăăăă¤ăă塌ăăĺłăŤăăăŽä¸ăŽăăăăĺłăă塌ăŤĺĺžăăĺşćşăŻĺŽĺ
¨ăŤäťťćă§ăăĺ¤ă ă
MSBăăĄăźăšăă¨LSBăăĄăźăšăăŽĺăăăąăźă¸ăłă°ć¨ćşăŤăŻăăăăéˇćă¨çćăăăăä¸ćšăăćŁăăăăăăä¸ćšăăééăŁăăă¨ćĺŽăăăăăăă˘ăăŞăąăźăˇă§ăłăŽĺéăç°ăŞăăăźăŤă¨čăăćšăăŻăăăŤäžżĺŠă§ăă ăă¤ăăŞăźăăźă¨ăĺ¤ăăă¤ăăăŻăźăăăžăăŻăă大ăăŞăăŽăŤăăăŻăăĺż
čŚć§ăŤă¤ăăŚăŻăăăăăăăăłă°ć¨ćşăŤćăčŞçśăŞé ĺşă使ç¨ăăăă¨ă埡ăăĺ§ăăăžăăMSB-firstăŻĺ˝çśăăăă°ă¨ăłăăŁă˘ăłăŽăă¤ăé ăŤĺŻžĺżăăLSB -firstăŻăăŞăăŤă¨ăłăăŁă˘ăłăŽăă¤ăé ă¨čŞçśăŤä¸č´ăăžăă éăŽé ĺşă§ăă¤ăăšăăŞăźă ăč¨čż°ăăŞăéăďźäżĄăăăăŞăăăăăăžăăăăăăăăčŤççăŞççąăăăăžăďźă ăăŽĺ ´ĺăăŞăăŤă¨ăłăăŁă˘ăłăŤĺŻžĺżăăéé ă§MSBăăĄăźăšăăĺĺžăăăăă°ă¨ăłăăŁă˘ăłăŤĺŻžĺżăăéé ă§LSBăăĄăźăšăăĺĺžăăžăă
ăčŞçśăŞăé ĺşăé¸ćăăççąăŻăăăăăç°ăŞăĺŽčŁ
ă§ăă大ăăŞčŞçąăä¸ăăăăă§ăă čŞçśăŞé ĺşăŽăšăăŞăźă ă§ăŻăĺ¤ăăŽç°ăŞăăăłăźăăźďźăăăłă¨ăłăłăźăăźďźă使ç¨ă§ăăžăăăăăăăăŤçŹčŞăŽăăŹăźăăŞăďźăăăłăăžăăžăŞăąăźăšă§ăŽĺŠçšďźăăăăžăă ăä¸čŞçśăŞă注ćăŻé常ă1ă¤ăŽçšĺŽăŽĺŽčŁ
ă§éŠç¨ăăăäťăŽćšćłă§ăăłăźăăăăă¨é常ăŤä¸äžżă§ăă
ćĺăŽgetbits
ďźăăăć˝ĺşďź
ĺéĄăĺĺăŞéă§čŞŹćăăăŽă§ăă˝ăŞăĽăźăˇă§ăłăĺŽčŁ
ă§ăăžăă ăăăăšăăŞăźă ĺ
¨ä˝ăéŁçśăăŚďźăă¤ăăŽé
ĺăŽăăăŤďźăĄă˘ăŞĺ
ăŤăăă¨äťŽĺŽăăă¨ăçšăŤĺç´ăŞăăźă¸ă§ăłăĺŻč˝ăŤăŞăăçžĺ¨ăŽă¨ăăăé
ĺăŽćĺžăŤĺ°éăăăŞăŠăŽä¸ĺżŤăŞĺéĄăĺŽĺ
¨ăŤçĄčŚăăžăă çĄéăŽăľăăăăžăăăďź ďźăŠăĄăăĺĺăŤĺ¤§ăăăăă¨ăă¸ăŽĺ¨ăăŤăźăăăăŁăłă°ăăăăžăăďź
ăăŽĺ ´ĺăç´ç˛ăŤćŠč˝çăŞăăăăć˝ĺşăé˘ć°ăŤĺşăĽăăŚĺŽčŁ
ăčĄăăă¨ăă§ăăžăăăăŽé˘ć°ă§ăŻăçşçăăĺéĄă¨ăăăă税éĄăŽăăăčŞăżĺăé˘ć°ă誏ćăăžăă LSBăăĄăźăšăăăăăăăăŻăăăă¨ăăĺ§ăăžăăăă
LSBăăĄăźăšăăăăăšăăŞăźă ăŻăăŞăăŤă¨ăłăăŁă˘ăłăŽć°ăĺ¤ăă¨ăăäşĺŽăĺŠç¨ăăžăăă ćĺăŤăé˘ĺżăŽăăăăăăŽăăăăăĺŤăćĺăŽăă¤ăăăĺ§ăžă64ăŽéŁćĽăăăăăă¤ăĺä˝ă§é
罎ăăĺż
čŚăŞćĺăŽăăăăŽä¸ăŤăăćŽăăŽä˝ĺăŞ0-7ăăăăĺăé¤ăăăăŤĺłăŤăˇăăăăăăšăŻăăăçľćăčżăăžăĺ¸ćăŽĺš
ă
pos
ăŽĺ¤ăŤĺżăăŚăăăŽĺłă¸ăŽăˇăăăŤăŻăăăŤ7ăăăăăăĺŻč˝ć§ăăăăžăă ăăăăŁăŚă64ăăăĺ
¨ä˝ăčŞăżĺăăžăăăăăŽăłăźăă§ä¸ĺşŚăŤčŞăżĺăăă¨ăă§ăăć大éăŻ64-7 = 57ăăăă§ăă
bitextract
ă
bitextract
ăç°ĄĺăŤĺŽčŁ
getbits
ăžăă ăăăăšăăŞăźă ăŽçžĺ¨ăŽä˝ç˝Žďźăăăĺä˝ďźă追补ăăčŞăżĺăĺžăŤă¤ăłăŻăŞăĄăłăăĺŽčĄăăžăă
MSBăăĄăźăšăăŽĺŻžĺżăăăŞăăˇă§ăłăŻăăłăźăăŽăă˘ăłăšăăŹăźăˇă§ăłĺžăŤčŞŹćăă1ă¤ăŽĺäťăŞĺéĄăé¤ăăŚăăăŞăäźźăćšćłă§ĺĺžăăăžăă
ăăŽăłăźăăŻĺăŽăłăźăă¨ĺć§ăŤćŠč˝ăăžăďźăă¤ăă§é
ĺăăă64ăŽéŁçśăăăďźäťĺăŻăăă°ă¨ăłăăŁă˘ăłďźăčŞăżĺăăĺż
čŚăŞăăăăăŁăźăŤăăŽä¸é¨ăMSB
bits
ăŤćăăăăăŤ
塌ăˇăăăĺŽčĄă
bits
ďźčŞżć´ăăăăăŤ
ĺłăˇăăăčĄăĺăŤďź LSB
bits
ďźă使ç¨ăăŚăăăăăŁăźăŤăăŽä¸é¨
getbits(3)
ă
getbits(3)
ăăăĺłăŤăˇăăăăŚä¸ăŽä¸ä˝ăăăăé
罎ăăŚăăăăčżăăžăăăăăŻă
getbits(3)
ăĺźăłĺşăă¨ăăŤé常0ăă7ăŽĺ¤ă襨示ăăăăă¨ăćĺž
ăăŚăăăăă§ă
ĺ˘çăˇăăăŽĺ ´ĺ
ăăă§ĺéĄăŻä˝ă§ăăďź ăăŽăăźă¸ă§ăłăŽăłăźăă§ăŻă
width
ăźăăŤ
width
ăă¨ăŻă§ăăžăăă ĺéĄăŻă
width == 0
ă訹ĺŻăăă¨ăćçľăˇăăă64ăăăĺ¤ă64ăăăĺłăŤăˇăăăăăă¨ăăăă¨ă§ăăăC / C ++ă§ăŻăăăŻćŞĺŽçžŠăŽĺä˝ă§ăďź ăăŽĺ ´ĺă0ă63ăă¤ăăŽăˇăăăĺŽčĄă§ăăžăă
ĺ ´ĺăŤăăŁăŚăŻăC / C ++ă§ăŻăăăˇăłă¨ăŽä¸ä˝äşćć§ăŽăăăŤčŠłç´°ăćŞĺŽçžŠăŽăžăžăŤăŞăăăăçžćçšă§ăŻčްăĺżé
ăăŚăăžăăă ăăçĽăăăäžďźçŹŚĺˇäťăć°ĺ¤ăŽčĄ¨çžăŤčż˝ĺ ăŽăłăźăă使ç¨ăăă¨ăăčŚäťśăăŞăă ă˘ăźăăăŻăăŁăŻčż˝ĺ ăŽăłăźăăŞăă§ĺĺ¨ăăžăăăäťćĽă§ăŻăăšăŚăĺçŠé¤¨ăŤăŽăżäżĺăăăŚăăžăă
ćŽĺżľăŞăăăăăăăŽăąăźăšăŻăăăžăăă ăˇăăéăçŻĺ˛ĺ¤ăŽĺ ´ĺăĺşă使ç¨ăăăŚăăăăžăăžăŞCPUă˘ăźăăăŻăăŁă§ä˝ă辡ăăăă揥ăŤç¤şăăžăă
- 32ăăăx86ăăăłx86-64ăŽĺ ´ĺăăˇăăĺ¤ăŻă32ăăă䝼ä¸ăŽăŞăăŠăłăĺš
ă§ăŻmod 32ă64ăăăăŞăăŠăłăă§ăŻmod 64ă¨ăăŚč§Łéăăăžăă ă¤ăžăăçľćă¨ăăŚ64ăăăĺ¤ă64ă ăĺłăŤăˇăăăăă¨ă0ăŤăăăˇăăă¨ĺăăŤăŞăăžăă ćä˝ăŽćŹ ĺŚďźăăźăŞăăŹăźăˇă§ăłďźă
- 32ăăăARMďźA32 / T32ĺ˝äť¤ăťăăďźă§ăŻăăˇăăĺ¤ăŻmod 256ăŤăŞăăžăăçľćă¨ăăŚ32ăăăĺ¤ăŽ32ďźăžăăŻ64ďźăŽĺłăˇăăăŻ0ăŤăŞăă255ăŤĺłăˇăăăăžăăă256ăŤĺłăˇăăăăă¨ĺ¤ăăăŽăžăžćŽăăžăă ă
- 64ăăăARMďźA64 ISAďźă§ăŻă32ăăăăˇăăăŽĺ ´ĺăŻmod 32ă64ăăăăˇăăăŽĺ ´ĺăŻmod 64ďźćŹčłŞçăŤx86-64ă¨ĺăďźă§ăˇăăĺ¤ăĺĺžăăăžăă
- RISC-VăĺăăŤăźăŤăŤĺžăăžăă32ăăăăˇăăăŽčˇé˘ăŻmod 32ă64ăăăăˇăăăŽčˇé˘ăŻmod 64ă¨ăżăŞăăăžăă
- POWER / PowerPCă§ăŻă32ăăăăˇăăăŻmod 64ăŽăˇăăĺ¤ăĺăă64ăăăăˇăăăŻmod 128ăŽăˇăăĺ¤ăĺăăžăă
ăăăŤćˇˇäšąăăăăăăŤăăăăăŽĺ˝äť¤ăťăăăŽăťă¨ăăŠăŤăŻSIMDćĄĺźľćŠč˝ăăăăć´ć°SIMDĺ˝äť¤ăŤăŻéSIMDĺ˝äť¤äťĽĺ¤ăŽç°ăŞăăŞăăˇăăĺä˝ăăăăžăă čŚăăăŤăăăăŻä¸čŹçăŞăăŠăăăăŠăźă éă§ă˘ăźăăăŻăăŁăŽéăăăăĺ ´ĺăŽ1ă¤ă§ăă ăťă¨ăăŠăŽäşşăŤă¨ăŁăŚăPOWERă¨RISC-VăŻĺ°ăć䝣é
ăăŤčŚăăăăăăăžăăăăăă¨ăă°32ăăăă¨64ăăăăŽARMăŻçžĺ¨ăä˝ĺăăŽăăă¤ăšăŤă¤ăłăšăăźăŤăăăŚăăžăă
ăăăăŁăŚăăłăłăă¤ăŠăăăŽĺłă¸ăŽăˇăăă§čĄăăă¨ăăšăŚă-ăżăźă˛ăăă˘ăźăăăŻăăŁăŤĺŻžĺżăăĺłă¸ăŽăˇăăĺ˝äť¤ăä¸ăăă¨ăăŚăďźăăăŚé常ăŻçşçăăžăďźăă˘ăźăăăŻăăŁăă¨ăŤç°ăŞăĺä˝ăčŚăăăžăă ARM A64ăăăłx86-64ă§ăŻă64ă¸ăŽăˇăăăŽçľćăŻĺşćŹçăŤä˝ăĺŽčĄăăăŞăăăă
getbits(0)
ăŻďźé常ďźăźă䝼ĺ¤ăŽĺ¤ăčżăăžăăăăźăăčżăăăăă¨ăäşćłăăăžăă
ăŞăăăăăăăŞăŤéčŚăŞăŽă§ăăďź ăăĄăăă
getbits(0)
ăłăźăăŻčĺłćˇąă使ç¨äžă§ăŻăăăžăăă ăă ăăĺ¤ć°xăŤĺŻžăăŚ
getbits(x)
ăĺŽčĄăăĺż
čŚăăăĺ ´ĺăăăăžăăxăŻĺ ´ĺăŤăăŁăŚăŻăźăăŤăŞăăă¨ăăăăžăă ăăŽĺ ´ĺăăłăźăăćŁĺ¸¸ăŤćŠč˝ăăçšĺĽăŞăąăźăšăŽăă§ăăŻăĺż
čŚă¨ăăŞăăŽă§ăăă°ç´ ć´ăăăăă¨ă§ăă
ăăŽăąăźăšăćŠč˝ăăăăĺ ´ĺă1ă¤ăŽăŞăăˇă§ăłăŻć示çăŤ
width == 0
ăăă§ăăŻăăăăăçšĺĽăŞćšćłă§ĺŚçăăăă¨ă§ăă ĺĽăŽăŞăăˇă§ăłăŻăĺš
ăăźăă§ĺä˝ăăĺĺ˛ăŞăăŽĺźă使ç¨ăăăă¨ă§ăăăă¨ăă°ă
Jenne Collet㎠FSEă使ç¨ăă揥ăŽăłăźăă§ăă
ăăŽçšĺŽăŽăąăźăšăŻăLSBăăĄăźăšăăăăăšăăŞăźă ăŽćšăćąăăăăă§ăă ăăăŚăăăăăŤă¤ăăŚč¨ĺăăăŽă§ăăăšăŻă使ç¨ăăćä˝ăŤă¤ăăŚčŠąăăžăăăăăăšăŻă使ç¨ăăŚă
width
ăăăăĺé˘ăăžăăă
ĺć§ăŽĺ˝˘ĺźăăăăžăăăăăŻă3ăŞăăŠăłăăăăłčŁć°ďźAND-NOTďźĺ˝äť¤ă使ç¨ăăă˘ăźăăăŻăăŁă§ăăăăŤĺŽäžĄă§ăă ăăăăŤăŻăĺ¤ăăŽRISC CPUă¨BMI1ă
ĺăăx86ă
ĺŤăžăăžăă ă¤ăžăăăăšăŚăŽăăăĺä˝ăŽăăšăŻăĺĺžăă塌ăˇăăăĺŽčĄăăŚä¸é¨
width
ăźăăŽ
width
ăčż˝ĺ ăăŚăăăăăšăŚăčż˝ĺ ă§ăăžăă
return bits & ~(~0ull << width);
x86ăŤBMI1ă ăă§ăŞăBMI2ăŽăľăăźăăăăĺ ´ĺăăłăłăă¤ăŠăźăŤăăăćäžăăďźăžăăŻă˘ăťăłăăŠăźă使ç¨ăăďźćšćłă
BZHI
ă§ăăă°ăăăŽĺ ´ĺăŽăăăŤçšĺĽăŤä˝ćăăă
BZHI
ĺ˝äť¤ă使ç¨ă§ăăžăă ĺ ´ĺăŤăăŁăŚăŻćăžăăăă1ă¤ăŽăŞăăˇă§ăłăŻăăłăźăăĺç´ĺăăĺ°ăăŞăăăăăăăŤăăŻă˘ăăăăźăăŤăĺç´ăŤćşĺăăăă¨ă§ăă
return bits & width_to_mask_table[width];
2ă¤ăŽć´ć°ćźçŽăŽçľćăć źç´ăăăŤăăŻă˘ăăăăźăăŤăćşĺăăăŽăŻăă¨ăă§ăăŞăă˘ăŻăˇă§ăłăŽăăăŤčŚăăžăăçšăŤăăăźăăăăăźăăŤčŚç´ ăŽă˘ăăŹăšăŽč¨çŽăŤăŻé常ăăˇăăă¨ĺ çŽăŽä¸ĄćšăĺŤăžăăžăăăăźăăŤďź -ăăăăăăŽçć°ăŤăŻçŹčŞăŽćšćłăăăăžăďźĺż
čŚăŞă˘ăăŹăšăŽč¨çŽăŻăăă¨ăă°x86ăăăłARMăăˇăłä¸ăŽ1ă¤ăŽăăźăĺ˝äť¤ă§ăĄă˘ăŞă˘ăŻăťăšăŽä¸é¨ă¨ăăŚĺŽčĄă§ăăăăă
ăăŽăˇăăă¨čż˝ĺ ăŻă˘ăăŹăšçćăŚăăăďźAGUďźă§č¨çŽăăăžăCPUă¸ăŽăăźăăă¤ăăŠă¤ăłăŽä¸é¨ă¨ăăŚăć´ć°ćźçŽăăăłăˇăăĺ˝äť¤ă§ăŻăăăžăăă ă¤ăžăă2ă¤ăŽć´ć°ALUĺ˝äť¤ă1ă¤ăŽć´ć°ăăźăĺ˝äť¤ăŤç˝Žăćăăă¨ăăç´ćăŤĺăăćąşĺŽăŻăç°ăŞăăŞăăŹăźăăŁăłă°ăŚăăăéă§č˛ čˇăŽăăŠăłăšăćšĺăăăăăă˘ăŻăăŁăăăăI / Oă使ç¨ăăăłăźăăŽĺ¤§ĺš
ăŞéŤéĺăŤă¤ăŞăăăžăă
ăă1ă¤ăŽčĺłćˇąăçšć§ăŻăăăšăŻăŤăăŻă˘ăăăăźăăŤă使ç¨ăăLSBăăĄăźăšăăăźă¸ă§ăłăăĺ¤ć°ăŤăăŁăŚ1ă¤ăŽăˇăăăĺŽčĄăăăă¨ă§ăďźć˘ăŤčŞăżĺăăăăăăăăˇăăăăăăďźă ĺ¤ăăŽďźĺ¤ăăŽĺ ´ĺăäşç´°ăŞďźďźççąă§ăĺ¤ăăŽăă¤ăŻăă˘ăźăăăŻăăŁă§ăŻăĺ¤ć°ăŤăăć´ć°ăŽăˇăăăŻăłăłăă¤ăŤćéăŽĺŽć°ĺ¤ăŤăăăˇăăăăăéŤäžĄă§ăăăăăăăăŻéčŚă§ăă ăă¨ăă°ăCell PPU / Xbox 360 XenonăŻă12ăľă¤ăŻăŤă¨ăăé常ăŤéˇăćéăăăťăăľăłă˘ăŽé庌ăä˝ä¸ăăăĺŻĺ¤čˇé˘ăˇăăă§ćŞĺăéŤăăĺŽćçăŞăˇăăăăă¤ăăŠă¤ăłăŤçľăżčžźăžăă2ăľă¤ăŻăŤă§ĺŽčĄăăăžăăă ĺ¤ăăŽIntel x86ăă¤ăŻăă˘ăźăăăŻăăŁă§ăŻăăĺžćĽăŽăx86ĺ¤ć°ăˇăăďź
SHR reg, cl
ăŞăŠďźăŻăăłăłăă¤ăŤćĺŽć°ăŤăăăˇăăăăă3ĺéŤäžĄă§ăă
ăăăŻăMSBăăĄăźăšăăăŞă˘ăłăăćĺŚăăăă1ă¤ăŽççąăŽăăă§ăăä¸č¨ăŽăŞăăˇă§ăłăŻăăăăć˝ĺşćä˝ăŤĺŻžăăŚ2ă¤ăžăăŻ3ă¤ăŽăˇăăăĺŽčĄăăžăă ăăăă1ă¤ăŽăˇăăăă¤ăžăé常ăŽăˇăăăŽäťŁăăăŤĺžŞç°ăˇăăă使ç¨ăăŚćä˝ăŤćťăăă¨ăă§ăăăăŞăăŻăŽăăăăăăăžăă
ăăă§ă塌ăăźăăźăˇă§ăłďźCăłăłăă¤ăŠă§ăŽćéŠăŞä˝żç¨ćšćłăçč§Łăăĺż
čŚăăăăžăďźăŻăćĺăŤĺ
ăŽĺˇŚăˇăăăŽä˝ćĽăčĄăă揥ăŤä˝ĺăŞăĺš
ăăăăăĺ蝢ăăŚăăăăăăŁăźăŤăăĺ¤ăŽćä¸ä˝ăăăăăćä¸ä˝ăăăăŤĺ蝢ăăăžă, , LSB-first.
ăăăăŻăăç§ăŻ8ă§é¤çŽăĺłăŤ3ăˇăăăçĄçŹŚĺˇä˝ç˝ŽăŽmod-8ăăă¤ăăŞAND 7ă§ć¸ăĺ§ăăžăăăăăăăŻĺçăŽç˝Žćă§ăăăăăŽăăăŞĺ˝˘ĺźăĺŽéăŽăłăźăă§čŚăăă¨ăă§ăăăŽă§ăăăăŤčż˝ĺ ăăăă¨ăŤăăžăăăăăŽĺ蝢ăăšăŻćä˝ă使ç¨ăăŚăRAD Game Toolsă§Cell PPUă¨Xbox 360ăŽăăăăčŞăżĺăăžăăăăăăŻăăăŽăłă˘ă§ĺŻĺ¤čˇé˘ăˇăăăă˛ăŠăăăă§ăăăăăŽăăźă¸ă§ăłăŤăĺéĄăăŞăăă¨ăŤćł¨ćăăŚăă ăăwidth == 0
ăĺŻä¸ăŽĺéĄăŻăăťă¨ăăŠăŽă˘ăźăăăŻăăŁăŤĺĺ¨ăăďźăăăŚčż
éăŤĺŽčĄăăăďźăăźăăźăˇă§ăłĺ˝äť¤ă¸ăŽäžĺć§ă§ăăăé常ăCăłăźăăăăăăăŤă˘ăŻăťăšăăăŽăŻä¸äžżă§ăăăăăăˇăăă¨ăăšăăłă°ăĺŽčĄăăăăžăăžăŞćšćłăŤă¤ăăŚăŻć˘ăŤčŞŹćăăžăăăăĺ°ćĽăŻăăăăĺç
§ăăžăăăăăăăăăI / OăŽĺŽç¨çăŞăă¸ăăŻăŻăžă 示ăăŚăăžăăďźăăăăć˝ĺşăă形ĺźăŻăçść
ăčăăăŤćŚĺżľă誏ćăăăŽăŤäžżĺŠăŞčŻăĺşçşçšă§ăăăĺŽéăŽăłăźăă§ăŻăçšăŤăăă使ç¨ăăŞăă§ăăăăăăăšăăŞăźă ĺ
¨ä˝ăăĄă˘ăŞĺ
ăŤăăăé常ăŽĺŽčĄăăăťăšă§ăăăăĄăŽćĺžăžă§ç°ĄĺăŤčŞăżĺăăăă¨ăĺćă¨ăăŚăăžăďźăăă§ăç§ăăĄăŻä¸ťăŞăżăšăŻăćąşĺŽăăăăšăŻăŽăˇăăă¨ä˝żç¨ăĺŽčĄăăăăžăăžăŞćšćłăć¤č¨ăăăăšăŻăŽĺşćăŽĺéĄăćăăăŤăăžăăăç§ăé¸ćăăăăăăć˝ĺşă形ĺźăŻăçść
ăŽăŞăăăŞăăăŁăăŤĺşăĽăăŚăăžăăăăăŻăăŤăźăä¸ĺ¤ĺźă使ç¨ăăŞăăŁăăăăćĺăăäžżĺŠă§ăăă揥ăŤăééăăăťă¨ăăŠăŽăăăăŞăźăăźă§ä˝żç¨ăăăçść
ăŽăšăżă¤ăŤăŤé˛ăżăžăďźćăĺŽäžĄă§ăăăă¨ăĺ¤ćăăăăďźăăžăăă˘ăăŞăˇăăŻăŞćŠč˝getbits
ăăăăăĺ¤ăăŽé¨ĺăŤĺĺ˛ăăăćŠč˝ăŤç§ťčĄăăžăăăăăăćĺăăĺ§ăăžăăăăăŞăăˇă§ăł1ďźĺ
Ľĺă1ăă¤ăăă¤čŞăżčžźă
ăă¨ăŻăšăăŠăŻăżăźăăŞăźăăźăŻăăăăăšăăŞăźă ĺ
¨ä˝ăäşĺăŤăĄă˘ăŞĺ
ăŤăăăă¨ăĺćă¨ăăŚăăžăăăăăŻĺ¸¸ăŤĺŻč˝ăžăăŻćăžăăă¨ăŻéăăžăăăăă1ă¤ăŽćĽľçŤŻăŞăąăźăšăă¤ăžăăăăăŞăźăăźă調ăšăŚăĺż
čŚăŞă¨ăăŤă ăčż˝ĺ ăŽăăăă1ă¤ăă¤čŚćąăăžăăä¸čŹăŤăăšăăźăăăŤăŞăăˇă§ăłăŻä¸ĺşŚăŤć°ăă¤ăăŽĺ
Ľĺăĺăĺăăé¨ĺçăŤĺŚçăăăăăă¤ăăŽăă¤ăăćăĄăžăăăăŽăăźăżăĺ¤ć°ăŤäżĺăăĺż
čŚăăăăăăăăăăăăăăăĄăźăă¨ĺźăłăžăă
ĺ
ĽĺĺŚçä¸ăăăŽăăăăĄăçľäşăăă¨ĺ¸¸ăŤć°ăăăăăăăăŽăăăăĄăŤć¸ăčžźăăăĺŻč˝ă§ăăă°ăăŽăăăăĄăăăăăăčŞăżĺăăžăăčŚĺ´ăăgetbits
ăŤăä¸ĺşŚăŤ1ăă¤ăăă¤čŞăżĺăćĺăŽĺŽčŁ
ăä˝ćăăžăăăăäťĺăŻMSBăăĄăźăšăăăĺ§ăăžăă
ĺă¨ĺć§ăŤăcount
ĺăŽé¨ĺă§čŞŹćăăăăăŤăçľćăŽăăăăĺĺžăăćšćłăĺ¤ć´ăăăă¨ăŤăăăâĽ1 ăŽčŚäťśăĺăé¤ăăă¨ăă§ăăžăăćĺžăŤăăăŤă¤ăăŚč¨ĺăăžăăă˘ăŤă´ăŞăşă ăŽăăźă¸ă§ăłă襨示ăăăăłăŤă䝼ĺăŽăăŞă¨ăźăˇă§ăłăčŞĺçăŤéŠç¨ăăăăă¨ăŤćł¨ćăăŚăă ăăăăăă§ăŽă˘ă¤ăă˘ăŻé常ăŤĺç´ă§ăăăžăăčŚćąăăăăŤćşăăăŽăŤĺĺăŞăăăăăăăăĄăŤăăăăŠăăă確čŞăăžăăăăă§ăŞăĺ ´ĺăŻăĺĺăŞéăŤăŞăăžă§ăä˝ĺăŞăă¤ăă1ă¤ăă¤ć¸ăčžźăżăžăăăăăŻgetbyte()
ăçćłçăŤăŻăăă税ăŽăăăăĄăŞăłă°ăăăI / OăĄăŤăăşă ă使ç¨ăăăă¨ăćĺłăăžăăăăăŻăăŻăŞăăŁăŤăŤăăšä¸ăŽăă¤ăłăżăźăŽéĺç
§ă¨ă¤ăłăŻăŞăĄăłăăŤĺç´ăŤăŞăăžăăăăăéżăăăă¨ăă§ăăăŞăă°ăăăăŻăăăžăăé˘ć°ĺźăłĺşăăžăăŻéŤäžĄăŞăăŽă§ăăĺż
čŚăăăăžăăä¸ĺşŚăŤ8ăăăăćżĺ
Ľăăăăă1ĺăŽĺźăłĺşăă§ć大57ăăăăăŤăŚăłăă§ăăžăăăăăŻăä˝ă夹ăĺąéşăĺăăăŤăăăăĄăčŁĺ
ă§ăăć大ăăăć°ă§ăăăăŽĺžcount
ăăăăăĄăăä¸ä˝ăăăăĺĺžăăăăăăăˇăăăăžăăăăăŤäżĺăăăä¸ĺ¤ĺźăŻăăŤăŚăłăăăăŚăăŞăćĺăŽăăăăMSBăăăăĄăźăŤäżĺăăăăă¨ă§ăăăžăăăăŽăăăťăšă3ă¤ăŽĺ°ăăŞćä˝ăŤäžżĺŠăŤĺĺ˛ăăăŚăăăă¨ăŤă注ćăăŚăă ăăăăăăăŽćä˝ăăčŁĺ
ăăăăăźăŻăăăăăłăćśč˛ťăă¨ĺźăłăžăă ăčŁĺ
ăăă§ăźăşă§ăŻăăăăăĄăźăŤćĺ°ć°ăŽăăăăĺĺ¨ăăăă¨ăäżč¨źăăăžăă ăăšăăŁăłăăŻăăăăăĄĺ
ăŽćŹĄăŽć°ăăăăç ´ćŁăăăŤčżăăăćśč˛ťăăŻăăăăčŚăăŤăăăăĺé¤ăăžăăăăăăŻăăšăŚĺĺĽăŤĺ˝šçŤăĄăžăăăăăăăšăŚăŠăŽăăăŤć§ćăăăŚăăăă示ăăăăŤăLSBăăĄăźăšăă˘ăŤă´ăŞăşă ăŤç¸ĺ˝ăăăăŽăăăĺ°ăăŞé¨ĺăŤĺăăŚç¤şăăžăă
getbits
ăăă3ă¤ăŽĺ°ăăŞăăŞăăăŁăăçľăżĺăăăŚč¨é˛ăăăă¨ăŻă常ăŤćéŠă¨ăŻéăăžăăăăă¨ăă°ăMSBăăĄăźăšăăăăăăăăĄăŤĺ蝢ćšćłă使ç¨ăăĺ ´ĺăĺ蝢ăăă§ăźăşpeekbits
ă¨ăŤĺĺ˛ăăĺż
čŚăăăconsume
ăžă; ćéŠăŞĺŽčŁ
ă§ăŻăä˝ćĽăăăă2ă¤ăŽăă§ăźăşăŤĺĺ˛ăăăžăăăă ăăăăăăŽ3ă¤ăŽăă§ăźăşăăšăŚăĺĺĽăŽăšăăăă¨ăăŚăăšăżăźăăă¨ăăăăăăăžăăžăŞćšćłă§ä¸çˇăŤä˝żç¨ă§ăăăăăăłăźăăăăăăŽĺĺĽăŽăšăăăăŤĺĺ˛ăăăă¨ăŻäžçśă¨ăăŚćç¨ă§ăă漽ăăżăŤăăŚ
ăăŽăăăŞćăéčŚăŞĺ¤ćăŻăăăă¤ăăŽăăłăźăćä˝ăŽčŁĺ
ĺĺ´ă§ăăç°ĄĺăŞăăăĄăăŽäžăăĺ§ăăžăăăă䝼ĺăŤĺĺžăă3ăăăăŽăăŁăźăŤăăăŤăŚăłăăăăă¨ăăžăă a = getbits(4); b = getbits(3); c = getbits(5);
ĺ ´ĺgetbits
ăä¸č¨ăŽăăăŤĺŽčŁ
ăăăăăŽăłăźăăŻ3ĺďźčŁĺ
ăăăťăšăăăăă彟čŞčşŤďźăžă§ĺŽäşăăăă¨ă確čŞăăžăăăăăăăăăŻćăă§ăăä¸ĺşŚăŤ4 + 3 + 5 = 12ăăăăčŞăżĺăăă¨ăäşĺăŤăăăŁăŚăăăăăăăšăŚĺćăŤĺĺžă§ăăžăă refill(4+3+5); a = getbits_no_refill(4); b = getbits_no_refill(3); c = getbits_no_refill(5);
ăăă§ăgetbits_no_refill
-ĺĽăŽăŞăăˇă§ăłgetbitsăčĄăpeekbits
ă¨consume
ĺĺăčŁĺ
ăăăă¨ăŞăăćĺłăăăăăŤăăăăăăăăŚăĺĽă
ăŽĺźăłĺşăéăŽăŞăăŁăźă¸ăľă¤ăŻăŤăĺăé¤ăă¨ăgetbits
ăłăłăă¤ăŠăźăŤăăŁăŚćéŠĺăăăĺç´ăŞć´ć°ăłăźăăăăăăžăăă§ăăăč¨ăćăăă°ăĺşĺŽéˇăŽăąăźăšăŻä˝ăłăšăă§ăăăă¨ăă°ă揥ăŽăăăŤăĺŽéăŤćśč˛ťăăăăăć°ăăăăăŞăĺ ´ĺăŻăăăŤčĺłćˇąăăăŽăŤăŞăăžăă temp = getbits(5); if (temp < 28) result = temp; else result = 28 + (temp - 28)*16 + getbits(4);
ăăăŻă0ă27ăŽĺ¤ă5ăăăă§é俥ăăă28ă91ăŽĺ¤ă9ăăăă§é俥ăăăĺç´ăŞĺŻĺ¤éˇăłăźăă§ăăăă¤ăłăăŻăăăŽĺ ´ĺăĺ°ćĽćśč˛ťăăăăăć°ăäşĺăŤăăăăŞăăă¨ă§ăăăă ăă9ăăă䝼ä¸ăăăă¨ăăăăŁăŚăăăăăčŁĺ
ă1ĺă ăçşçăăăă¨ă確čŞă§ăăžăă refill(9); temp = getbits_no_refill(5); if (temp < 28) result = temp; else result = 28 + (temp - 28)*16 + getbits_no_refill(4);
ĺŽéăĺż
čŚăŤĺżăăŚăăăšăŚăŽĺŽčĄăăšă§ăăăŤćä˝ăä¸ćăăŚă严ćšăŽĺŽčĄăăšăä¸ĺşŚă ăďźconsume
ďźăăăăćśč˛ťăăăăăŤăăăă¨ăă§ăăžăăăă¨ăă°ăMSBăăĄăźăšăăăăăăăăĄă使ç¨ăăĺ ´ĺăăăŽĺ°ăăŞăăłăźăă揥ăŽăăăŤč¨čż°ă§ăăžăă refill(9); temp = peekbits(5); if (temp < 28) { result = temp; consume(5); } else {
ăăŽăăăŞăă¤ăŻăăăĽăźăăłă°ăŻăé常ăŤăă¸ăźăŞăľă¤ăŻăŤăŽĺ˘çăčś
ăăŚĺźˇăć¨ĺĽ¨ăăăăă¨ăŻăăăžăăăăĺčż°ăăăăăŤăăăăăŽăăłăźăăľă¤ăŻăŤăŽä¸é¨ăŻé常ăŤč˛ čˇăéŤăăăăŽĺ ´ĺăăăă¤ăăŽĺ˝äť¤ăç°ăŞăĺ ´ćăŤäżĺăăă¨ćˇąĺťăŞĺŠĺžăĺžăăăžăăĺŻĺ¤éˇăłăźăďźăă¨ăă°ăăăăăłăłăźăďźăăăłăźăăăăăăŽçšăŤéčŚăŞććłăŻăçšĺŽăŽăăăć°ăĺ
čŞăżăăăăŽçľćăŤĺşăĽăăŚăăźăăŤăć¤ç´˘ăăăă¨ă§ăăăăźăăŤčŚç´ ăŻăăăłăźăăăăćĺăä˝ă§ăăăăćśč˛ťăăĺż
čŚăŽăăćĺć°ďźă¤ăžăăćĺăŤĺŽéăŤĺąăăăšăăŁăłăăăăăăć°ďźă示ăăžăăăăăăăŁă¨ăăăžăăăăăłăăŞăźăŽĺăšăăăăăă§ăăŻăăŚăä¸ĺşŚăŤ1ă¤ăžăăŻ2ăăăăŽăłăźăăčŞăżĺăăăăéŤéă§ăďźćŽĺżľăŞăăăăăŽćšćłăŻĺ¤ăăŽćç§ć¸ăăăŽäťăŽĺ
Ľéăăăšăă§ćäžăăăŚăăžăďźăăăăăĺéĄăăăăžăăĺ
čŞăżăăŚćśč˛ťăăăăăć°ăćąşĺŽăăćčĄăŻĺĺ埡ĺă§ăăăăŤăźăŤăĺ¤ć´ăăgetbits
ă ăă§ăăä¸č¨ăŽĺŽčŁ
ăŻă羜寞ăŤĺż
čŚăŞĺ ´ĺăŤăŽăżä˝ĺăŞăă¤ăăčŞăżĺăăă¨ăăžăăăă ăăĺŻĺ¤éˇăŽăłăźăăŞăźăăźăŽĺ¤ć´äžăŻĺ¸¸ăŤčŁĺ
ăăăăăăćçľçăŤ5ăăăăăćśč˛ťăăŞăĺ ´ĺă§ăăăăăăĄăźăŤăŻĺ°ăŞăă¨ă9ăăăăĺŤăžăăžăăčŁĺ
ăčĄăăăĺ ´ćăŤăăŁăŚăŻăăăźăżăšăăŞăźă čŞä˝ăŽçľäşĺžăŤčŞăżĺăăčĄăăăĺ ´ĺăăăăžăăĺ
čŞăżăŽćšćłăŤć
Łăăžăăăĺ¤ć´ăăăăłăźăăŞăźăăźăŻăăăŽĺż
čŚć§ă確čŞăăăĺă§ăăŁăŚăăčż˝ĺ ăŽĺ
Ľĺăĺăĺăĺ§ăăžăăăăŽă˘ăăăźăăŤăŻĺ¤ăăŽĺŠçšăăăăžăăăăăŹăźăăŞăăŻăăăăăšăăŞăźă ăŽčŤççăŞçľăăăŽĺ¤ĺ´ă埡ĺśçăŤčŞăżčžźăăăă¨ă§ăăăăăŻăăăŽăăăŞĺ ´ĺăŽćŁăăĺŚçă確ĺŽăŤčĄăĺż
čŚăăăăă¨ăćĺłăăžăăăŻăăăŻăŠăăˇăĽăŽĺĺ ăŤăŞăŁăăăăšăăŞăźă ăŽĺ¤é¨ă§čŞăżĺăŁăăăăăă¨ăŻăăăžăăăăăăăăăăŤĺ ăăŚăĺ
ĽĺăăăăĄăŞăłă°ăžăăŻăŻăăăăłă°ăŹă¤ă¤ăźăŽĺä˝ĺçăćĺłăăžăăĺ
čŞăżăăăĺ ´ĺăăăăĺŚçăăćšćłăĺż
čŚă§ăă丝ăŞăŞăăˇă§ăłăŻćŹĄăŽă¨ăăă§ăă- - , , - . , .
- , ,
getbits
, , ( - , ); , - ( ). - , lookahead , , . , 64- , , - 8- (, - ). , , .
- , -, , , . , lookahead , , . , C
ungetc
, ungetc
, . -.
ç§ăŻăăŞăăć
°ăăžăă-ăăăăŽăŞăăˇă§ăłăŻăăšăŚĺŽčŁ
ăéŁăăăä¸é¨ăŻäťăŽăŞăăˇă§ăłăăăĺ°éŁă§ăăćĺžăŤä˝ăăćżĺ
ĽăăŚĺéĄăĺăé¤ăăŽăćăç°ĄĺăŞćšćłă§ăăĺ¤é¨ăăŹăźăăłă°ăŹă¤ă¤ăźăŽçśćłăĺŚçăăăă¨ăčŻăč§Łćąşçă§ăăăI / OăăăăĄăŞăłă°ăłăłăăăźăŤĺ
¨ä˝ăä˝ăç´ăăŚć°ăă¤ăăŽčŞăżĺăăăăŁăłăťăŤăăăŽăŻćŹĺ˝ăŤă˛ăŠăă§ăăăăăăăăŞăăłă°ăĺśĺžĄă§ăăŞăĺ ´ĺăĺăŤčŻăč§ŁćąşçăŻăăăžăăăéĺťăŤăç§ăŻăăŽćčă§ĺ˝šçŤă¤äžżĺŠăŞăăŻăăăŻăŤé˘ăăć稿ăć¸ăăžăăăĺŽčŁ
ăŤăăŁăŚăŻăăă¨ăă°ćŹĄăŽăăăŤč¨ĺŽăăăă¨ă§ĺéĄăĺéżă§ăăžăăbitcount
ĺĺŤăăćĺžăŽăă¤ăăćżĺ
Ľăăç´ĺžăŽĺˇ¨ĺ¤§ăŞĺ¤ăăăăăä¸čŹçăŞăąăźăšă§ăŻăĺ
čŞăżăĺŽčŁ
ăăĺ ´ĺăŻăăăç¨ĺşŚăŽĺ´ĺă貝ăăĺż
čŚăăăăžăăăăăăé常ăĺă¤ăă¨ăŻăăă ăăŽäžĄĺ¤ăăăăŽă§ăăăăŻăŤăźăŹăăă˛ăźă ă§ăŻăăăžăăăăŞăăˇă§ăł2ďźç§ăăĄăŻćŹĺ˝ăŤä¸ĺşŚăŤ64ăăăăăŤăŚăłăăăĺż
čŚăăăăžă
ĺăŤčŞŹćăăăăšăŚăŽăĄă˝ăăăŻăăă¤ăĺä˝ă§ăŽä˝ćĽăéżăăăăăŤăăžăăžăŞăăŞăăŻă使ç¨ăăžăăć˝ĺşăăăăŞăźăăźăŻăĺŽĺ
¨ăŞ64ăăăăčŞăżĺăăă¨ăăĺ§ăžăăžăăăçžĺ¨ăŽăă¤ăăŽăă§ăŤćśč˛ťăăăé¨ĺăç ´ćŁăăăăăŤ7ăă¸ăˇă§ăłăˇăăăăĺż
čŚăăăăžăăä¸č¨ăŽäžgetbits1
ă§ăŻăăăăăăăăĄăźăŤä¸ĺşŚăŤ1ăă¤ăăćżĺ
ĽăăžăăăăăăĄăŤăă§ăŤ57ăăăăăăăăć°ăăăă¤ăç¨ăŽăšăăźăšăăŞăĺ ´ĺďźçľćăŻăăăăĄăŽĺš
ăăă大ăă65ăăăă§ăăăăďźăăăăŻăĄă˝ăăă§ăľăăźăăăăć大ĺš
getbits1
ă§ăă 57ăăăăŻăăŞăćç¨ăŞéă§ăăă32ăăăăăŠăăăăŠăźă ă§ä˝ćĽăăĺ ´ĺăĺć§ăŽăă¸ăăŻăăłăăźăŻ25ăăăďź32-7ďźăŤăŞăăăăăŻăăŞăĺ°ăŞăéă§ăăăĺ¤ăăŽĺ ´ĺĺĺă§ăŻăăăžăăă嚸ăăŞăă¨ăŤăĺ
¨ĺš
ăĺż
čŚăŞĺ ´ĺăŻăăăăĺŽčŁ
ăăćšćłăăăăžăďźMSBăăĄăźăšăăŽĺ蝢ăăăłăăăăăăăĄăźăăšăŻă使ç¨ăăććłă¨ĺć§ăŤăRADă§ăăăĺŚăłăžăăďźăăăŽćŽľéă§ăMSBăăĄăźăšăă¨LSBăăĄăźăšăăŽăĄă˝ăăăŽé˘äżăŻăă§ăŤçč§ŁăăŚăăă¨ćăăŽă§ă1ă¤ăŽăŞăăˇă§ăłăŽă˝ăŞăĽăźăˇă§ăłăŽăżă示ăăžăă LSBăăĄăźăšăăé¸ćăăžăăăďź
ăăŽăăăŞă˘ăăăźăăŻăä¸č¨ă§ć¤č¨ăăă˘ăăăźăăăăĺ°ăč¤éă§ăăăä¸ĺ¤ĺźăćŁăăćŠč˝ăăăăăŤć示çăŞĺćĺăšăăăăĺż
čŚă§ăăăžăă䝼ĺăŽăăźă¸ă§ăłă¨ăŻç°ăŞăăăăă¤ăăŽčż˝ĺ ăăŠăłăă使ç¨ăăăăăPCăŞăŠăŽć確ăŞăă¤ăăŠă¤ăłăćă¤ăăˇăłăŤăŻăăžăéŠăăŚăăžăăăăăăŤăç§ăŻăăăĺăłä˝żç¨ăăŚăăăă¨ăŤćł¨ćăăŚăă ăăwidth_to_mask_table
ăăăăŻăă˘ăłăšăăŹăźăˇă§ăłăŽăăă ăă§ăŻăăăžăăďźä¸ăăăăĺš
ăŽăăšăŻăč¨çŽăăăăăŤĺĺ使ç¨ăăçŽčĄĺźăŻwidth
ăä¸čŹçăŞ64ăăăă˘ăźăăăŻăăŁă§ćĺšăŞĺ
¨éé0-64ă§ćŠč˝ăăžăăIBM POWERăăăŚăăăăŻăăĄăăă訹ĺŻăăăŞăä¸ć確ăŞćŻăčăăŽććŚăçĄčŚăăĺ ´ĺăŤăŽăżćŠč˝ăăžăăĺşćŹçăŞčăćšăŻé常ăŤĺç´ă§ăă1ă¤ăŽăăăăĄăźă ăă§ăŻăŞăă2ă¤ăŽĺ¤ă追补ăăžăăćĺžăŤčŞăżĺăăă64ăăăĺ¤ăăćŽăăŽăăăć°ăăăăŁăŚăăăăpeekbits
ăăăăăĺĺă§ăŞăĺ ´ĺăĺ
ĽĺăšăăŞăźă ăă揥ăŽ64ăăăĺ¤ăĺĺžăďźĺ¤é¨ĺŽčŁ
ă使ç¨get_uint64LE()
ďźăćŹ č˝ăăŚăăăăăăĺĺžăăžăăĺć§ăŤăăăăconsume
ăćśč˛ťăăĺžăçžĺ¨ăŽĺ
ĽĺăăăăĄăŤăăăăćŽăŁăŚăăăăŠăăă確čŞăwidth
ăžăăăăă§ăŞăĺ ´ĺăŻăĺ
čŞăżĺ¤ăăăăăăŤĺăćżăăŚďźćśč˛ťăăăĺ¤ăŤăˇăăăăďźăăăŠă°have_lookahead
ăăŻăŞă˘ăăŚăĺăŽĺ
čŞăżĺ¤ăĺăŤăăăăăăăĄăŽĺ
厚ăŤăŞăŁăăă¨ă示ăăžăăćĺšăŞçŻĺ˛ĺ¤ăŽăŞăăťăăăăŞăăă¨ăäżč¨źăăăăăŤăăăŽăłăźăăŤăŻăăŠăłăăĺĺ¨ăăžăďźćŞĺŽçžŠăŽĺä˝ăĺźă辡ăăăžăďźăăă¨ăă°ăăăăăĄăŤăăăăăăăăŠăpeekbits
ăcount <= bitcount
ăčŞčăăăăăŤăŠăŽăăăŤăă§ăăŻăăăă調ăšăžăăăăconsume
使ç¨ăcount < bitcount
ăžăăăăăŻĺśçśă§ăŻăăăžăăďźăŽč¨çŽnext_bits
ăŤpeekbits
ăŻăŤăăĺłăˇăăăĺŤăžăbitcount
ăžăăăăăŻbitcount
< count
â¤64 ăŽăăšă§ăŽăżçşçăăăăăbitcount < 64
ĺŽĺ
¨ă§ăăăă¨ăćĺłăăžăăconsume
çśćłăé蝢ăăŚăăďźç§ăăĄăŻăˇăăăčĄăăžălookahead_consumed = count - bitcount
ăăăăăŻăĺ˛ăćĄäťśăŻălookahead_consumed
âĽ0ăäżč¨źăăžăăéćšĺă§ăŻăcount
64 bitcount
䝼ä¸ă1 䝼ä¸ăŞăŽă§ălookahead_consumed
â¤64-1 =63ăă¤ăžăăKnuthăŽč¨čăč¨ăćăăă¨ăăä¸č¨ăŽăłăźăăŽăă°ăŤćł¨ćăăŚăă ăăăç§ăŻăăăćŁăă訟ćăăăăăăšăăăŞăăŁăăăăăăăăŁăźăŤăăŽĺš
ăĺşăăă¨ăŤĺ ăăŚăăăŽććłăŤăŻăă1ă¤ăŽĺŠçšăăăăžăă常ăŤä¸ĺşŚăŤĺŽĺ
¨ăŞ64ăăăuintăčŞăżĺăăă¨ăŤćł¨ćăăŚăă ăăăä¸č¨ăŽăŞăăˇă§ăł1ăŻä¸ĺşŚăŤăă¤ăăčŞăżĺăăžăăăĺĺ
éťăľă¤ăŻăŤăĺż
čŚă§ăă䝼ä¸ă§čŞŹćăăăăžăăžăŞéĺĺ˛ăŞăăˇă§ăłăŻăéŤéăŽéć´ĺčŞăżĺăăăľăăźăăăăăăŤăżăźă˛ăăăăăťăăľăŤćéťçăŤäžĺăăžăăăăăŻă1ă¤ăŽăľă¤ăşă¨ä¸ĺŽăŽă˘ăŠă¤ăĄăłăăčŞăżĺăăă¨ă§éçŤăŁăŚăăĺŻä¸ăŽăăźă¸ă§ăłă§ăăăăŽăăăăă¨ăă°ĺ¤ăăŽĺ¤ăRISCăăăťăăľăŞăŠăéŤéăŽéă˘ăŠă¤ăĄăłăčŞăżĺăăăľăăźăăăŞăăżăźă˛ăăăˇăšăă ăŤă¨ăŁăŚăăé
ĺçă§ăăăă¤ăăŽăăăŤăç§ăčŚăăŞăäťăŽăăŞă¨ăźăˇă§ăłăăăăăăăăžăăăă¨ăă°ăăĄă˘ăŞăŤĺŽĺ
¨ăŤăăłăźăăăăăźăżăăăĺ ´ĺăăăźăŤăăŠă°ăĺ°çĄăăŤăăççąăŻăăăžăăhave_lookahead
ăçžĺ¨ăŽĺ
čŞăżčŞă¸ăŽăă¤ăłăżăäżĺăăçžĺ¨ăŽĺ
čŞăżčŞăćśč˛ťăăăă¨ăăŽăă¤ăłăżăă¤ăłăŻăŞăĄăłăă§ăăžăăăŞăăˇă§ăł3ďźăăăć˝ĺşăŤćťă
ĺăŽé¨ĺăăć˝ĺşăăĺ
ăŽăăăăŞăźăăźăŻé常ăŤéŤäžĄă§ăăăăă ăăĺ
ĽĺăšăăŞăźă ĺ
¨ä˝ăĺćăŤăĄă˘ăŞĺ
ăŤăăă¨ăăčŚäťśăŤćşčśłăăŚăăĺ ´ĺăŻăăăărefill / peek / consumerăăżăźăłă§ăŠăăăăŚćç¨ăŞăăŽăĺĺžă§ăăžăăăžă ĺ
čŞăżăŽăăďźăăăăŁăŚă寞ĺżăăĺ°éŁăçăăďźĺ°ăăŽčŞč
ăăăžăăăăăăŻäşşçă§ăăăăă§ăŻăăă¨ăă°MSBăĺăłä˝żç¨ăăžăă const uint8_t *bitptr;
äťĺgetbits
ăŻăăŞăăŁăŤ/ăăźăŻ/ćśč˛ťăŽĺźăłĺşăăăć§çŻăăăăăŽăĺé¤ăăžăăăăăăŻăăă1ă¤ăŽçč§Łăăšăăăżăźăłă§ăăăăă§ăăăăăŻé常ăŤčŻăăŞăăˇă§ăłă§ăăăăŞăăŁăŤăă¨ăăăźăŻă/ăćśč˛ťăăŽĺĽă
ăŽé¨ĺăŤăăăăć˝ĺşăăăă¸ăăŻăç ´ăă¨ăăăăăŽĺă
ăŽăăźăšăăŠăăťăŠĺ°ăăçč§ŁăăăăăăćăăăŤăŞăăžăăăăăăŤăĺĺ˛ăŻĺŽĺ
¨ăŤăăăžăăďźăăŽăĄă˝ăăăŻăéć´ĺ64ăăăăăă°ă¨ăłăăŁă˘ăłčŞăżĺăĺ¤ăĺĺ¨ăăé常ăŤĺŽäžĄă§ăăăă¨ăćĺž
ăăŚăăžăďźăăăŻăä¸čŹçăŞx86ăăăłARMă˘ăźăăăŻăăŁăŽĺéĄă§ăŻăăăžăăďźăăăăŤăçžĺŽçăŞĺŽčŁ
ăŽăăăŤăŻăăăăăĄăŽă¨ăłăăąăźăšĺŚçăčż˝ĺ ăăĺż
čŚăăăăžăăăĺ
čŞăżăăŤé˘ăăăťăŻăˇă§ăłăŽčŞŹćăĺç
§ăăŚăă ăăăăŞăăˇă§ăł4ďźĺĽăŽĺ
čŞăżăżă¤ă
揥ăŤăĺĺ˛ăăăŤĺĽăŽĺ
čŞăżăŞăăˇă§ăłăĺŽčŁ
ăăžăăăăç§ăŽçĽăéăăăăŽăŞăăˇă§ăłăŻăŻăŠăźăąăłă§ä˝ćĽä¸ăŤĺĺăŽăăŁăźăŤăşăťăăŤăźă ă¨ç§ăRADăŽĺŠăăĺăăŚçşčŚăăžăăďźć´ć°ďźă¤ăłăăłăĄăłăă§ććăăăăăŤă丝ăŞă˘ă¤ăă˘ăŻăŻăŠăźăąăłăŽăŞăŞăźăšăŽăăŞăĺăŤXpackăŽă¨ăŞăăŻăťăăŹăźăşăŤăăŁăŚä˝żç¨ăăăžăăăç§ăŻçĽăăžăăă§ăăç§ăăăăŁăźăŤăşă¨ćăăžăăăăăăŻăăăŽă˘ă¤ăă˘ăŻç˘şăăŤé ăŽä¸ă§ç§ăăĄăŤćĽăŚĺăăŚă§ăŻăŞăăăăăăç§ăăĄăŽăăźă¸ă§ăłăŻčĺłćˇąăćŠč˝ăćăŁăŚăăăă¨ăćĺłăăŚăăžă- ăă§čŠłç´°ăĺç
§ăăŚăă ăăăç§ăŽĺżçďźăăšăŚăŽăăăăŞăźăăźăŤăŻĺĺ˛ăăăăžăăăďźăŞăăŁăŤăŞăŠă§ăăăăĄăŽçľăăăŽăă§ăăŻăçĄčŚăăă¨ĺĺ˛ăăžăăďźăăăŽăŞăăˇă§ăłăŤăŻăăă¤ăăŽčĺłćˇąăăăăăăŁăăăăžăďźĺż
čŚăŞçĽčăăŞăăăăăăăăŽăăă¤ăăŤă¤ăăŚăŻĺžă§čŞŹćăăžăďźăăăŽçľăżĺăăă§ăŻăç§ăŻäťăŽăŠăăŤăäźăŁăăă¨ăăăăžăăăäťăŽčްăăç§ăăĄăŽĺăŤăăăŞăăăłăĄăłăă§ç§ăŤçĽăăăŚăă ăăăăăăŚç§ăŻééăăŞăčč
ăŤč¨ĺăăžăďźăăăăŁăŚăăăă§ăŻLSBăăĄăźăšăăŤćťăăžăăăăăŻăăăšăŚăŽăăŞăăźăŤé˘äżăŞăăLSBăăĄăźăšă/ MSBăăĄăźăšăăăăŽăŹăăŤă§äş¤ćĺŻč˝ă§ăăăă¨ă示ăăăă§ăă const uint8_t *bitptr;
ăăźăŻă¨ăłăłăˇăĽăźă ăŽćŽľéăŻăă§ăŤčŚăŚăăžăăăăäťĺăŻä˝ăăăŽççąă§ć大訹厚ăăăĺš
ă1ă¤ć¸ĺ°ăă56ăăăăŤăŞăăžăăăççąăŻčŁĺ
掾éă§ăăăăăŽĺä˝ăŻäťĽĺăŤčŚăăăŽă¨ăăăăŤç°ăŞăăžăă 64ăăăăŽăŞăăŤă¨ăłăăŁă˘ăłăčŞăżĺăăăăăăçžĺ¨ăŽăăăăăăăĄăźăŽćä¸é¨ăŤä¸č´ăăăăăŤăˇăăăăăă¨ăŻćăăă§ăăăă ăăbitptr
/ă使ç¨ăăćä˝ăŤbitcount
ăŻčŞŹćăĺż
čŚă§ăăăăĺ§ăăćšăç°Ąĺbitcount
ă§ăăĺ
ăťăŠčŚăăŞăăˇă§ăłă§ăŻăăăăăĄăčŁĺ
ăăĺžăé常57ăăăăă64ăăăăŤăŞăăžăăăăă ăăăăŽăăźă¸ă§ăłăŻă56ă63ăăăăăăăăĄăźăŤć źç´ăăăă¨ăçŽçă¨ăăŚăăžăďźăăăăăŤăŚăłăżăźăŽĺśéă1ă¤ć¸ăŁăççąă§ăďźăăăăăăŞăă§ăăďź
ć´ć°ăŽăă¤ăăćżĺ
Ľăăă¨ăčŁĺ
ćbitcount
ăŤ8ăŽĺć°ă ăĺ˘ĺ ăăžăăăăăŻăbitcount & 7
ďźä¸ä˝3ăăăďźăĺ¤ć´ăăăŞăăă¨ăćĺłăăžăăăăăŚăăăăăĄăŽ[56.63]ăăăăçŽćăăŚăŞăăŁăŤăčĄăă¨ăĺä¸ăŽăă¤ăăŞORćźçŽă§ć´ć°ăăăăăăć°ăč¨çŽă§ăăžăăăăăŻćŹĄăŽčłŞĺăŤă¤ăŞăăăžăďźăă¤ăłăżăźăăˇăăăăăŤăŻä˝ăă¤ăĺż
čŚă§ăăďźă˝ăźăšăŽĺ¤ăčŚăŚăżăžăăăbitcount
ďź- 56â¤â¤63ăŽĺ ´ĺ
bitcount
ăăă§ăŤăżăźă˛ăăééĺ
ăŤăăă揥ăŽăă¤ăăŤç§ťĺăăĺż
čŚăŻăăăžăăă - 48â¤â¤55ăŽĺ ´ĺ
bitcount
ăćŁç˘şăŤ1ăă¤ăăčż˝ĺ ăăžăďźbit_ptr
ĺăéă ăç§ťĺăăĺż
čŚăăăăžăďźă - 40â¤â¤47ăŽĺ ´ĺ
bitcount
ăćŁç˘şăŤ2ăă¤ăăčż˝ĺ ăăžăă
ăŞăŠăŞăŠă
ăăăŻ(63 - bitcount) >> 3
ăăŤčż˝ĺ ăăăă¤ăă§ćŠč˝ăăžăbitptr
ăăŞăźăăźăăăăŽĺ ´ĺbitbuf
ăbitcount
ORćźçŽăć°ĺĺŽčĄă§ăăžăăăă ăăăăăçşçăăă¨ăĺăĺ¤ăŤORăéŠç¨ăăăăłăŤçľćăĺ¤ć´ăăăžăăăăăăăŁăŚăĺžă§ćśč˛ťćŠč˝ăŽĺłă¸ăŽăˇăăăŽăăăŤăăăăăăä˝ăç§ťĺăăă¨ăăăăšăŚăŻăăăă§ăăžăăăăžăăă´ăăŽĺŻč˝ć§ăŤă¤ăăŚĺżé
ăăĺż
čŚăŻăăăžăăăăăĄăăăăăăŻé˘ç˝ăă§ăăăăăŽăăźă¸ă§ăłăŽçšĺĽăŞçšăŻä˝ă§ăăďźä¸č¨ăŽăŞăăˇă§ăł3ăŞăŠăŽäťŁăăăŤăăă¤ä˝żç¨ăăĺż
čŚăăăăžăăďź1ă¤ăŽç°ĄĺăŞççąăăăăžăăăăŽăŞăăˇă§ăłă§ăŻăăăźăăăă˘ăăŹăšrefill
ăŻçžĺ¨ăŽĺ¤ăŤäžĺăăžăăăbitcount
ăĺŽéă揥ăŽăăŚăłăăźăă˘ăăŹăšăŻăĺĺăŽčŁĺ
ăĺŽäşăăç´ĺžăŤčŞčăăăžăăăăŽăăăăŞéăăŻă丌ĺ¤ăăĺŽčĄăčĄăăăăťăăľăŤă¨ăŁăŚé常ăŤĺ¤§ăăŞĺŠçšă§ăăć´ć°ăĺŤăćä˝ăŽä¸ă§ăL1ăăŁăăˇăĽă§ăăăăăĺ ´ĺă§ăăčŞăżčžźăżćä˝ăŻĺ¤§ăăŞé
ĺťśďźé常ăŻç´3ă5ăľă¤ăŻăŤăăťă¨ăăŠăŽć´ć°ćä˝ăŻ1ăľă¤ăŻăŤăăăăžăďźăŤăăŁăŚçšĺž´äťăăăbitcount
ăăľă¤ăŻăŤăŽĺ垊ăŽçľäşćăŽćŁç˘şăŞĺ¤ăŻé
ăăăăă¨ăăăăŁăŚăăžăďźä¸ă§ç¤şăăĺŻĺ¤éˇăŽç°ĄĺăŞăłăźăăĺç
§ăăŚăă ăăďźăăăŚăłăăźăă˘ăăŹăšăçŹçŤăăŚăăĺ ´ĺbitcount
ăăăăŻăĺăŽăŞăăŁăŤăĺŽäşăăç´ĺžăŤć˝ĺ¨çăŤăăźăăłăăłăăé俥ă§ăăăă¨ăćĺłăăžăăăăźăăŽăă¤ăé ăăżăźă˛ăăISAă¨ä¸č´ăăŞăĺ ´ĺďźăă¨ăă°ăăŞăăŤă¨ăłăăŁă˘ăłCPUă§MSBăăĄăźăšăăăăăăăăĄăźă使ç¨ăăĺ ´ĺďźăĺ¤ăŽĺŻč˝ăŞăă¤ăé ĺă§ăăŚăłăăźăăĺŽäşăăĺĺăŞćéăăăăžăăĺăŽĺ¤ăŤäžĺăăĺŻä¸ăŽăăŠăĄăźăżăźbitcount
ăŻăˇăăăă¤ăžăăé常1ăľă¤ăŻăŤăăăé常ăŽALUćä˝ă§ăăç°ĄĺăŤăžă¨ăăă¨ăăăŽăăŞăč¤éăŞčаăćżăăŽăăźă¸ă§ăłăŻĺĽĺŚăŤčŚăăžăăăĺ˝äť¤ăŹăăŤă§ăŽä¸Śĺć§ăŽćčťăŞĺ˘ĺ ăćäžăăžăăĺ˝ćăŽćć°ăăźă¸ă§ăłăŽKraken-Huffmanăăłăźăăźă§2016ĺš´ăŤăăšăăăă¨ăăăăăšăŻăăăPCă§ăŽé庌ăŽĺ˘ĺ ăŻç´10ďź
ă§ăăďźä¸č¨ăŽĺĺ˛ăŞăăŽăŞăăŁăŤăŤćŻăšăŚďźă