Exampleこのサイトで型キャスティングを学びました。2の補数で型のキャスティングが行われると符号が反転する場合があることを知りましたので、まとめてみます。対応する符号なしの型にキャストする。128をu8にキャストすると128となる。i8);128をi8でキャストすると-128になります。これはRustが符号付きでは以下のルールでキャストするためです。対応する符号なしの型にキャストする。Qiitaこのサイトがわかりやすかったです。足すと桁上がりする数のうち最小の数。(10進数なら98の補数は2)足しても桁上がりしない数のうち最大の数。(10進数なら98の補数は1)特に2進数は2の補数(足すと桁上がりする数のうち最小の数。(ビット反転)1の補数(足しても桁上がりしない数のうち最大の数。(ビット反転した数に1を足す)があります。サイト構築日記Rustではないですが、他の言語でも同様の現象があるので、こちらのサイトがわかりやすかったです。-128になるのをみて、一瞬思ったのが、「128の2の補数は128ではないか」と思いました。128の2の補数は128で間違い無いのですが、解説を読むとわかりました。i8の範囲は「-128~127」なので8個のbitを使用しますが、8bit目は符号の役割を果たします。128はi8の範囲からあふれています。128は2進数では「10000000」となりますが、i8では8個目のビットが立っているとマイナス表現で負の数は2の補数で処理されるので-128と表現されてしまいます。これが、128の2の補数は128ですがi8は-128となってしまう原因です。補数という言葉を知らなかったので、知れてよかったと思いました。rustだけではなく、他の言語でも同様の現象起こりそうなので、ハマった時に思い出せたら役に立つと思いました。(1)月別アーカイブ参加グループはてなブログをはじめよう!TAKOYAKINGさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。