質問: チェックサムについてご質問です。 バイナリデータのチェックサムを作成しています。 チェックサム専用の容れ物は8Byteです。 最初は1Byteずつ全てのデータを足して、それをチェックサムにしようと思いました。(16進数) しかし、「マイナスしていった方が、2の補数になっていいよ」と言われました。 足していっても大丈夫だと思うのですが、、、 マイナスしていった方が良いという考えが分かる方、 その考えをご教授願いたいです。 初歩的な質問ですみませんが、よろしくお願いいたします。
回答: おそらく、後でデータの検証をするときに、ほんのちょっとだけ簡単になるからでしょう。 例えばデータ転送後に、足していって作ったチェックサムでデータの検証をするときは、転送されてきたチェックサムを保存しておき、転送データから再計算したチェックサムと比較して、同じなら OK になります。 一方、マイナスしていって作ったチェックサムの場合は、転送されたチェックサムにデータを足して込んでいき、最後に 0 になっていれば OK ということになります。つまり、2の補数になっている == 足せば 0 になる、という性質を利用しているわけです。