デミオです!
ゆたかな日々にお越しいただき、ありがとうございます!
今回は
エクセル(excel)でパリティ計算する方法(マクロ無しで)
について書きました
スポンサーリンク
ぜひ最後まで読んでください(^^)
エクセル(excel)でパリティ計算する方法(マクロ無しで)
Yahoo!知恵袋でこんな質問を見つけました。
Excelで31bitデータのパリティを求めたいのですが
どのような関数の組み合わせでできますか?
まあここにたどり着いた方には詳しい説明は不要と思いますが。
パリティ計算とは
データを転送するときとかにデータが壊れてないかのチェックのために、
2進数の1の数を数えて、その数が偶数か奇数かを調べて、帳尻を合わせる、というもの。
偶数パリティの場合は、1の数が偶数だったら、偶数パリティビットが0になります。
奇数パリティビットの場合は、、1の数が奇数だったら、奇数パリティビットが0になります。
偶数パリティの場合は、パリティビット付きのデータ内の1の数が必ず偶数になる。
奇数パリティの場合は、パリティビット付きのデータ内の1の数が必ず奇数になる。
とも言えます
というわけでエクセル作ってみました。
ファイル落とせない方のためにいくつか数式書いておきます。
A2の16進数(00~7F)を2進数8桁に変換(B2セルに)
=HEX2BIN(MID(A2,1,2),8)B2セルの2進数を7ビット~1ビット目まで1ビットずつ取り出す(C2~I2に入力)
=MID($B2,2,1)
=MID($B2,3,1)
=MID($B2,4,1)
=MID($B2,5,1)
=MID($B2,6,1)
=MID($B2,7,1)
=MID($B2,8,1)偶数パリティビット計算 (AL2に入力)
=MOD(COUNTIF(C2:I2,1),2)奇数パリティビット計算(AM2に入力)
=MOD(MOD(COUNTIF(C2:I2,1),2)+1,2)偶数パリティつき16進数
=BIN2HEX(CONCATENATE(AL2,MID(B2,2,7)))奇数パリティつき16進数
=BIN2HEX(CONCATENATE(AM2,MID(B2,2,7)))
エクセル(excel)でパリティ計算する方法(マクロ無しで)に関する感想
エクセルは16進数→2進数への変換が8桁までしかできないみたいで、31ビットの計算のためにセル分けたりしなきゃいけなくて大変でした。。
あとはセル内の1の数を数える、というのがエクセルの計算式だけではできず、いちいちセルを分割しなきゃいけないのもなかなか大変でした。
他にもオススメの記事があるので、そちらもぜひ読んでみてください!
まとめ ~エクセル(excel)でパリティ計算する方法(マクロ無しで)~
それでは、内容をまとめます。
エクセル(excel)でパリティ計算する方法(マクロ無しで)~まとめ~
- エクセルは16進数→2進数への変換が8桁までしかできない
- セル内の1の数を数える、というのがエクセルの計算式だけではできず、いちいちセルを分割しなきゃいけないのもなかなか大変
以上で
エクセル(excel)でパリティ計算する方法(マクロ無しで)
についてのまとめを終わります。
最後まで読んでいただき、ありがとうございました(^^)
スポンサーリンク
コメント