「xを16ビットの2進数で表現する方法」について

簡単な例を出しながら、以下の通りに考えてみる。

・2進数の4ビットをまとめて扱うと「16進数」になる。
⇨2進数の「1111」が表せる最大の値は「16」であるから。

・2進数の8ビットをまとめて扱うと「256進数」になる。
⇨2進数の「11111111」が表せる最大の値は「256」であるから。

 

つまりは、「xを16ビットの2進数で表現する。」という動作を行うと、
・2進数の16ビットをまとめて扱うと「65536進数」になる。
⇨2進数の「1111,1111,1111,1111」が表せる最大の値は「65536」であるから。


「xの上位8ビットと下位8ビットを入れ替える方法」について

【事前知識】
商(div)とは割り算の結果ことである。(ex.10div3=3)
余り(mod)とは割った後の余りのことである。(ex.10mod3=1)

この方法を理解するために、簡単な例として
xを2桁の10進数として各桁の数字を取り出す事を例として考えてみましょう。

その例で考えると、

  • 10の位は「x div 10」
  • 1の位は「x mod 10」

となります。

「上位8ビットと下位8ビットを入れ替える」という事なので
この例では「上位桁と下位桁を入れ替える」という方法でそれを実現する。

 

・10の位を1の位に変換する方法
⇨これは単純に考えればよい話で「10進数であり、10の位ならば10で割った値」が1の値になる。
⇨25という値の2桁目を1桁目に変換したいならば、
⇨「25div 10」で結果は2の余りが5である。よって1の位は「2」である。

 

・1の位を10の位に変換する方法
⇨1の位を10の位に変換する(1桁前にずらす)ためには「10進数ならば10倍」すればよい。
⇨よって、「x mod 10」に10倍すればよいという事がわかる。

 

今の話を総括すると、1の位と10の位を入れ替えるためには、
【「x div 10」+「x mod 10」✕10】とすればよいことが分かる。

 

ちなみに、「xを16ビットの2進数で表現した値の上位8ビットと下位8ビットを入れ替える時の式」は
【「x div 256」+「x mod 256」✕256】となる。