2020/09/11

Ichigojam x sakura.io(パリティ値の演算式)

 Ichigojamから、sakura.ioモジュールを使って、sakura.ioへ送信電文を作る場合、電文の最後にパリティ値が必要となる。

たとえば、

要素種別引数データ長引数データ1引数データ2パリティ値
chtypeD0D1D2D3D4D5D6D7chtypeD0D1D2D3D4D5D6D7
#21201#69TT>>80000002#69HH>>8000000P

の場合、パリティ値は、要素種別~引数データ2D7までの値の全ての排他的論理和となる。

この時のパリティ値の演算式は次のとおり。ちなみにデータが[0]は、省略できるため、

P=(H>>8)^(T>>8)^H^T^#21^20^1^#69^2^#69

となる。

ここで気を付けたいのは、右シフト演算を先に計算させるように()カッコを用いていること。C言語などの演算式は、右シフト演算は、排他的論理和より優先順位が上位なのだが、Ichigojamは、シフト演算と論理演算が同位らしく、()がないと、左から順に演算されてしまって、正しい値が計算できなくなる。(わたしはこれでずいぶんハマった…)

0 件のコメント:

コメントを投稿