例:「1234567」から、「34」を取り出す場合
7:1の位
6:10の位
5:100の位
4:1000の位
3:10000の位
2:100000の位
1:1000000の位
「3」は10000の位、「4」は1000の位になります。
<途中の「34」として取り出したい場合>
①「1234567」÷「1000」=「1234」:数学上は「1234567」÷「1000」=「1234」・・・「567」
SBの「÷」は切り捨てのため、「商」を計算できます。
右から3桁分を削って、右に3桁分シフトして、1000の位を1の位に下ろします。
②「1234」余り「100」=「34」:数学上は「1234」÷「100」=「12」・・・「34」
SBの「余り」はMOD演算で、「余り」を計算できます。
右から2桁分を取り出すには、右から2桁目より左を消すため、100で割った時の余りを出します。
<途中の「3」と「4」を個別に取り出したい場合>
①「1234567」÷「1000」=「1234」:数学上は「1234567」÷「1000」=「1234」・・・「567」
右から3桁分を削って、右に3桁分シフトして、1000の位を1の位に下ろします。
②「1234」余り「100」=「34」:数学上は「1234」÷「100」=「12」・・・「34」
右から2桁分を取り出すには、右から3桁目以左を消すため、100で割った時の余りを出します。
③-1)「34」÷「10」=「3」:数学上は「34」÷「10」=「3」・・・「4」
右から1桁分を削って、右に1桁分シフトして、10の位を1の位に下ろします。
③-2)「34」余り「10」=「4」:数学上は「34」÷「10」=「3」・・・「4」
右から1桁分を取り出すには、右から2桁目以左を消すため、10で割った時の余りを出します。
<右から「567」として取り出したい場合>
①「1234567」余り「1000」=「567」:数学上は「1234567」÷「1000」=「1234」・・・「567」
右から3桁分を取り出すには、右から4桁目以左を消すため、1000で割った時の余りを出します。
<右から「5」「6」「7」を個別に取り出したい場合>
①「1234567」余り「10」=「7」:数学上は「1234567」÷「10」=「123456」・・・「7」
右から1桁分を取り出すには、右から2桁目以左を消すため、10で割った時の余りを出します。
②「1234567」÷「10」=「123456」:数学上は「1234567」÷「100」=「123456」・・・「7」
右から1桁分を削って、右に1桁分シフトして、10の位を1の位に下ろします。
③「123456」余り「10」=「6」:数学上は「123456」÷「10」=「12345」・・・「6」
右から1桁分を取り出すには、右から2桁目以左を消すため、10で割った時の余りを出します。
④「123456」÷「10」=「12345」:数学上は「123456」÷「10」=「12345」・・・「6」
右から1桁分を削って、右に1桁分シフトして、10の位を1の位に下ろします。
⑤「12345」余り「10」=「5」:数学上は「12345」÷「10」=「1234」・・・「5」
右から1桁分を取り出すには、右から2桁目以左を消すため、10で割った時の余りを出します。
<左から「567」の「5」のみ取り出したい場合>
①「567」÷「100」=「5」:数学上は「567」÷「100」=「5」・・・「67」
先頭の右から3桁目だけを取り出すには、右に2桁分シフトして、100の位を1の位に下ろします。
<右から「567」の「7」のみ取り出したい場合>
①「567」÷「10」=「7」:数学上は「567」÷「10」=「56」・・・「7」
末尾の右から1桁目だけを取り出すには、右から2桁目以左を消すため、10で割った時の余りを出します。
例:「10110」=「EDCBA」から、「11」=「CB」を取り出す場合
0:A:2^0=1の位
1:B:2^1=2の位
1:C:2^2=4の位
0:D:2^3=8の位
1:E:2^4=16の位
<AND → 右シフト>
①「10110」AND「00110」=「00110」:「EDCBA」AND「00110」=「00CB0」
②「00110」右シフト「1」=「0011」:「00CB0」右シフト「1」=「00CB」→CBを抜く
③-1)「0011」AND「0001」=「0001」:「00CB」AND「0001」=「000B」→Bのみ抜く
③-2)「0011」右シフト「1」=「001」:「00CB」右シフト「1」=「00C」→Cのみ抜く
最初に、抜き出したい桁を「1」にした判定用の
ビットとAND演算します。
続いて、抜きたい桁が右端になるまで右シフトして抜き出します。
桁を個別に抜きたい場合、AND「1」と右シフト「1」の繰り返しで、連続で可能です。
<右シフト → AND>
①「10110」右シフト「1」=「1011」:「EDCBA」右シフト「1」=「EDCB」
②-1)「1011」AND「0011」=「0011」:「EDCB」AND「0011」=「00CB」→CBを抜く
②-2)「1011」AND「0001」=「0001」:「EDCB」AND「0001」=「000B」→Bのみ抜く
③「0011」右シフト「1」=「001」:「00CB」右シフト「1」=「00C」→Cのみ抜く
最初に、抜きたい桁が右端になるまで右シフトします。
続いて、抜き出したい桁を「1」にした判定用のビットとAND演算します。
幅のある桁を抜く場合、「1」や「11」や「111」などで可能です。
最終更新:2014年08月25日 00:12