<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>ビット／バイト on Miura Computer Club</title>
    <link>/tags/%E3%83%93%E3%83%83%E3%83%88%E3%83%90%E3%82%A4%E3%83%88/</link>
    <description>Recent content in ビット／バイト on Miura Computer Club</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja-JP</language>
    <lastBuildDate>Fri, 31 Jul 2026 15:00:00 +0900</lastBuildDate><atom:link href="/tags/%E3%83%93%E3%83%83%E3%83%88%E3%83%90%E3%82%A4%E3%83%88/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>レッスン110</title>
      <link>/lessons/lesson110/</link>
      <pubDate>Fri, 31 Jul 2026 15:00:00 +0900</pubDate>
      
      <guid>/lessons/lesson110/</guid>
      <description>2進数入門 n個の数字を使って数を表現する方法をn進数と言います。 私達が通常使っているのは0から9までの数字を使った10進数です。 でも、コンピュータの世界では0と1だけを使った2進数が基本となります。 なぜコンピュータは2進数を使うのでしょうか？
コンピュータは電気信号を使って動作しており、電気の「ON(1)」と「OFF(0)」の状態を基本として情報を処理します。 そのため、2進数がコンピュータにとって最も自然な数の表示方法なのです。
n進法の基本概念 n進数の基本ルール 10進数：　0, 1, 2, 3, 4, 5, 6, 7, 8, 9 （10個の数字） 2進数：　0, 1 （2個の数字） 8進数： 0, 1, 2, 3, 4, 5, 6, 7 （8個の数字） 16進数： 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F （16個の数字） 16進数では、10以上の値をAからFのアルファベットで表現します。
位取り記数法の理解 すべての進数は「位取り記数法」という原理に基づいています。 これは、数字の位置によって、その数字が表す値が変わるという仕組みです。
10進数の例 1234 = 1*10^3 + 2*10^2 + 3*10^1 + 4*10^0 = 1*1000 + 2*100 + 3*10 + 4*1 = 1000 + 200 + 30 + 4 = 1234 この原理は他の進法でも同じように適用されます。</description>
      <content>&lt;h1 id=&#34;2進数入門&#34;&gt;2進数入門&lt;/h1&gt;
&lt;p&gt;n個の数字を使って数を表現する方法をn進数と言います。
私達が通常使っているのは0から9までの数字を使った10進数です。
でも、コンピュータの世界では0と1だけを使った2進数が基本となります。
なぜコンピュータは2進数を使うのでしょうか？&lt;/p&gt;
&lt;p&gt;コンピュータは電気信号を使って動作しており、電気の「ON(1)」と「OFF(0)」の状態を基本として情報を処理します。
そのため、2進数がコンピュータにとって最も自然な数の表示方法なのです。&lt;/p&gt;
&lt;h2 id=&#34;n進法の基本概念&#34;&gt;n進法の基本概念&lt;/h2&gt;
&lt;h3 id=&#34;n進数の基本ルール&#34;&gt;n進数の基本ルール&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;10進数：　0, 1, 2, 3, 4, 5, 6, 7, 8, 9 （10個の数字）&lt;/li&gt;
&lt;li&gt;2進数：　0, 1 （2個の数字）&lt;/li&gt;
&lt;li&gt;8進数： 0, 1, 2, 3, 4, 5, 6, 7 （8個の数字）&lt;/li&gt;
&lt;li&gt;16進数： 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F （16個の数字）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;16進数では、10以上の値をAからFのアルファベットで表現します。&lt;/p&gt;
&lt;h3 id=&#34;位取り記数法の理解&#34;&gt;位取り記数法の理解&lt;/h3&gt;
&lt;p&gt;すべての進数は「位取り記数法」という原理に基づいています。
これは、数字の位置によって、その数字が表す値が変わるという仕組みです。&lt;/p&gt;
&lt;h4 id=&#34;10進数の例&#34;&gt;10進数の例&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1234 = 1*10^3 + 2*10^2 + 3*10^1 + 4*10^0
     = 1*1000 + 2*100 + 3*10 + 4*1
     = 1000 + 200 + 30 + 4
     = 1234
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;この原理は他の進法でも同じように適用されます。&lt;/p&gt;
&lt;h2 id=&#34;2進法の基本概念&#34;&gt;2進法の基本概念&lt;/h2&gt;
&lt;h3 id=&#34;2進法の仕組み&#34;&gt;2進法の仕組み&lt;/h3&gt;
&lt;p&gt;2進法は、0と1の2つの数字だけを使って数を表現します。
位取り記数法により、右から左に向かって2の0乗、2の1乗、2の2乗&amp;hellip;という重みを持ちます。&lt;/p&gt;
&lt;h4 id=&#34;2進数の例&#34;&gt;2進数の例&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1011 = 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0
     = 1*8 + 0*4 + 1*2 + 1*1
     = 8 + 0 + 2 + 1
     = 11
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;なお、2進数の「1011」は10進数の「1011」と区別するため、例えばPythonでは先頭に「0b」を付けて&lt;code&gt;0b1011&lt;/code&gt;のように表示します。&lt;/p&gt;
&lt;h3 id=&#34;2進数の数え方&#34;&gt;2進数の数え方&lt;/h3&gt;
&lt;p&gt;2進数では、0から始まって以下のように数を数えます。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;10進数	2進数
0	0
1	1
2	10	(1*2^1 + 0*2^0)
3	11	(1*2^1 + 1*2^0)
4	100	(1*2^2 + 0*2^1 + 0*2^0)
5	101	(1*2^2 + 0*2^1 + 1*2^0)
6	110	(1*2^2 + 1*2^1 + 0*2^0)
7	111	(1*2^2 + 1*2^1 + 1*2^0)
8	1000	(1*2^3 + 0*2^2 + 0*2^1 + 0*2^0)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;2進法では、各桁で「繰り上がり」の発生するタイミングが10進法とは異なります。
10進法の2を表す際、0→1の次は、もう使える数字がないので&lt;code&gt;0b10&lt;/code&gt;になります。&lt;/p&gt;
&lt;h2 id=&#34;ビットとの関係&#34;&gt;ビットとの関係&lt;/h2&gt;
&lt;h3 id=&#34;ビットとは&#34;&gt;ビットとは&lt;/h3&gt;
&lt;p&gt;ビット(bit)とは、2進数の1桁を表す単位です。1ビットは0または1の値を持ちます。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;2進数: 1011
ビット: 4ビット（4桁）
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;バイトとの関係&#34;&gt;バイトとの関係&lt;/h3&gt;
&lt;p&gt;「1バイト = 8ビット」という関係があります。
これは、コンピュータが情報を処理する際の基本単位となっています。&lt;/p&gt;
&lt;h4 id=&#34;8ビットで表現できる値の範囲&#34;&gt;8ビットで表現できる値の範囲&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;最小値： 00000000 = 0
最大値： 11111111 = 255
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;2進数の簡単な覚え方&#34;&gt;2進数の簡単な覚え方&lt;/h2&gt;
&lt;h3 id=&#34;パターン1--2の累乗2を何回も掛け合わせる値を暗記する&#34;&gt;パターン1 : 2の累乗（2を何回も掛け合わせる値）を暗記する&lt;/h3&gt;
&lt;p&gt;まず2の累乗（2を何回も掛け合わせる値）を覚えることから始めましょう。
これは2進数変換の基礎となります。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;覚え方のコツ&#34;&gt;覚え方のコツ&lt;/h4&gt;
&lt;p&gt;2の累乗は、前の値を2倍していくだけです。&lt;/p&gt;
&lt;p&gt;1 → 2 → 4 → 8 → 16 → 32 → 64 → 128 → 256 &amp;hellip;&lt;/p&gt;
&lt;p&gt;この数列を覚えることで、2進数の各桁の重みが分かります。&lt;/p&gt;
&lt;h3 id=&#34;パターン2--規則性を見つける&#34;&gt;パターン2 : 規則性を見つける&lt;/h3&gt;
&lt;p&gt;2進数には規則性があります。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:center&#34;&gt;10進数&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;2進数（3桁で表示）&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;3桁目（4の位）&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;2桁目（2の位）&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;1桁目（1の位）&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;000&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;001&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;2&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;010&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;3&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;011&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;4&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;100&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;5&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;101&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;6&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;110&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;7&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;111&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;各桁の規則性&#34;&gt;各桁の規則性&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;1桁目（右端）：1つおきに0と1が交互に現れる&lt;/li&gt;
&lt;li&gt;2桁目：2つずつ0が続き、2つずつ1が続く&lt;/li&gt;
&lt;li&gt;3桁目：4つずつ0が続き、4つずつ1が続く&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1桁目（1の位）： 0, 1, 0, 1, 0, 1, 0, 1...（1つおきに変化）
2桁目（2の位）： 0, 0, 1, 1, 0, 0, 1, 1...（2つおきに変化）
3桁目（4の位）： 0, 0, 0, 0, 1, 1, 1, 1,..（4つおきに変化）
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;この法則は、「n桁目は2^(n-1)個おきに変化する」という法則にまとめりことができます。
この法則性を理解することで、2進数の並びを覚えやすくなります。&lt;/p&gt;
&lt;h2 id=&#34;10進数から2進数への変換&#34;&gt;10進数から2進数への変換&lt;/h2&gt;
&lt;h3 id=&#34;割り算を使った変換方法&#34;&gt;割り算を使った変換方法&lt;/h3&gt;
&lt;p&gt;最も基本的で確実な方法は、10進数を2で割り続ける方法です。&lt;/p&gt;
&lt;h4 id=&#34;ステップバイステップの手順&#34;&gt;ステップバイステップの手順&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;10進数を2で割る&lt;/li&gt;
&lt;li&gt;商（割った答え）と余り（0か1）を記録する&lt;/li&gt;
&lt;li&gt;商（割った答え）が0になるまで2.を繰り返す&lt;/li&gt;
&lt;li&gt;余りを下から上に読む&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;例13を2進数に変換&#34;&gt;例：13を2進数に変換&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;13 ÷ 2	= 6 余り 1
6 ÷ 2	= 3 余り 0
3 ÷ 2	= 1 余り 1
1 ÷ 2	= 0 余り 1

余りを下から読む：1101
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;2の累乗を使った変換方法&#34;&gt;2の累乗を使った変換方法&lt;/h3&gt;
&lt;p&gt;2の累乗を暗記している場合、より直感的な方法があります。&lt;/p&gt;
&lt;h4 id=&#34;例13を2進数に変換-1&#34;&gt;例：13を2進数に変換&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;13以下の2の累乗数を探す
1, 2, 4, 8, 16&amp;hellip;の中で、13以下の累乗数は「1, 2, 4, 8」&lt;/li&gt;
&lt;li&gt;13以下の累乗数のうち一番大きい8を13から引く → 残り5&lt;/li&gt;
&lt;li&gt;次に大きい4を残り5から引く → 残り1&lt;/li&gt;
&lt;li&gt;次に大きい2は残り1より大きいので、2は引かない&lt;/li&gt;
&lt;li&gt;次に大きい1を残り1から引く → 残り0&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;残りが0になったので、引いた累乗値で 8 + 4 + 1 = 13 = 2^3 + 2^2 + 2^0　と表せる。&lt;/p&gt;
&lt;p&gt;13を作るために引いた2の累乗の位置に「1」、引かなかった2の累乗の位置に「0」を入れます。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:center&#34;&gt;2の累乗&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;8(2^3)&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;4(2^2)&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;2(2^1)&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;2(2^0)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;引いた？&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;yes&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;yes&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;no&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:center&#34;&gt;2進数&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;0&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;したがって、13の2進数表現は&lt;code&gt;1101&lt;/code&gt;になります。&lt;/p&gt;
&lt;h2 id=&#34;16進数&#34;&gt;16進数&lt;/h2&gt;
&lt;p&gt;コンピュータは2進数が基本ですが、2進数は桁数が多くて表示するのが大変です。
そこで、一般的には、2の累乗数である8や16を使って8進数や16進数で2進数の値を表現するのが一般的です。
ここでは、最も一般的な16進数について説明します。&lt;/p&gt;
&lt;h3 id=&#34;2進数と16進数の関係&#34;&gt;2進数と16進数の関係&lt;/h3&gt;
&lt;p&gt;2進数の値を4桁ずつ区切って、各4桁の値を0から15（16進数では0からF）で表現したものが16進数になります。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;11011010（10進数で218) →　|1101|1010| → |D|A| → DA（16進数）
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;同様に、16進数の値は桁ごとに4桁の2進数に変換すれば、2進数になります。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;DA（10進数で218) →　|D|A| → |1101|1010| → 11011010（2進数）
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;このように、2進数と16進数は簡単に変換できるので、コンピュータの世界では2進数の代わりに16進数で表現することが一般的です。
なお、8進数も同様に3桁区切りで簡単に変換できるので、16進数ほど一般的ではありませんが、使われています。&lt;/p&gt;
&lt;h3 id=&#34;16進数の基本&#34;&gt;16進数の基本&lt;/h3&gt;
&lt;p&gt;16進数は0〜9とA〜Fの16個の文字を使います。
参考までに、8進法と2進法との対応も記載しました。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;10進数	16進数	8進数	2進数
0	0	0	0
1	1	1	1
2	2	2	01
3	3	3	11
4	4	4	100
5	5	5	101
6	6	6	110
7	7	7	111
8	8	10	1000
9	9	11	1001
10	A	12	1010
11	B	13	1011
12	C	14	1100
13	D	15	1101
14	E	16	1110
15	F	17	1111
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;16の累乗を暗記する&#34;&gt;16の累乗を暗記する&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;16^0 = 1
16^1 = 16
16^2 = 246
16^3 = 4096
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;10進法から16進法への変換&#34;&gt;10進法から16進法への変換&lt;/h2&gt;
&lt;h3 id=&#34;割り算を使った変換&#34;&gt;割り算を使った変換&lt;/h3&gt;
&lt;h4 id=&#34;例255を16進数に変換&#34;&gt;例：255を16進数に変換&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;255 ÷ 16 = 15 余り 15
15 ÷ 16 = 0 余り 15

余り15 = F
余り15 = F

結果： FF
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;2進数経由の変換&#34;&gt;2進数経由の変換&lt;/h3&gt;
&lt;p&gt;先程説明した2進数と16進数の関係を利用します。&lt;/p&gt;
&lt;h4 id=&#34;例255を16進数に変換-1&#34;&gt;例：255を16進数に変換&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;10進数を2進数に変換&lt;/p&gt;
&lt;p&gt;255 = 11111111&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;4桁ずつ区切る（右から）&lt;/p&gt;
&lt;p&gt;11111111 = |1111|1111|&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;区切った4桁を16進数に変換&lt;/p&gt;
&lt;p&gt;1111 = F
1111 = F&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;結果&lt;/p&gt;
&lt;p&gt;FF&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;2進数と16進数の対応は、先程の対応表を参照してください。&lt;/p&gt;
&lt;h2 id=&#34;16進数から10進数への変換&#34;&gt;16進数から10進数への変換&lt;/h2&gt;
&lt;h3 id=&#34;基本的な考え方&#34;&gt;基本的な考え方&lt;/h3&gt;
&lt;p&gt;16進数から10進数への変換も、位取り記数法を使います。
16進数の各桁に16の累乗数をかけて、それらを足し合わせます。&lt;/p&gt;
&lt;h3 id=&#34;16進数の文字を数値に変換&#34;&gt;16進数の文字を数値に変換&lt;/h3&gt;
&lt;p&gt;16進法で10〜15の値にA〜Fのアルファベットを使われることを忘れずに。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;A = 10 B = 11 C = 12 D = 13 E = 14 F = 15
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;変換の手順&#34;&gt;変換の手順&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;16の累乗を実際の数値に置き換え&lt;/li&gt;
&lt;li&gt;各項を計算&lt;/li&gt;
&lt;li&gt;合計して10進数を得る&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;例16進数のabを10進数に変換&#34;&gt;例：16進数のABを10進数に変換&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;16進数：AB

まず文字を数値に変換
A = 10, B = 11

各桁に16の累乗数をかけて計算
10*16^1 + 11*16^0
= 10*16 + 11*1
= 160 + 11
= 171
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;例16進数のff00を10進数に変換&#34;&gt;例：16進数のFF00を10進数に変換&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;16進数：FF00

まず文字を数値に変換
F = 15, F = 15, 0 = 0, 0 = 0

各桁に16の累乗数をかけて計算
15*16^3 + 15*16^2 + 0*16^1 + 0*16^0
= 15*4096 + 15*256 + 0*16 + 0*1		# 16の累乗数を実際の数値に置き換え
= 61440+ 3840 + 0 + 0			# 各項を計算
= 65200					# 合計して10進数を得る
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;よくある間違いと注意点&#34;&gt;よくある間違いと注意点&lt;/h2&gt;
&lt;h3 id=&#34;間違い１進数の表記を混同する&#34;&gt;間違い１：進数の表記を混同する&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;☓誤：10進数の10を2進数で「10」と書く
◯正：10進数の10は2進数で「1010」

☓誤：2進数の10を10進数の10と読む
◯正：2進数の10は10進数の2
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;間違い２桁の重みを間違える&#34;&gt;間違い２：桁の重みを間違える&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;☓誤：2進数の右から1桁目を2^1とする
◯正：2進数の右から1桁目は2^0（=1)

2進数の正しい桁の重み
位置：	4桁目	3桁目	2桁目	1桁目
重み：	2^3	2^2	2^1	2^0
値：	8	4	2	1
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;間違い３16進数の文字を誤解する&#34;&gt;間違い３：16進数の文字を誤解する&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;☓誤：16進数のAを10進数の「11」と誤解
◯正：16進数のAは10進数の「10」

16進数の対応
A = 10, B = 11, C = 12, D = 13, E = 14, F = 15
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;kbキロバイトmbメガバイトgbギガバイトtbテラバイトとは&#34;&gt;KB（キロバイト）、MB（メガバイト）、GB（ギガバイト）、TB（テラバイト）とは&lt;/h2&gt;
&lt;p&gt;コンピュータのメモリの大きさなどでよく、KB、MB、GB、TBというのを目にします。
キロ(K)とは、1000倍のことで、1000mのことを1km、1000gのことを1kgといいます。
キロ(k)の1000倍がメガ(M)、メガの1000倍がギガ(G)、ギガの1000倍がテラ(T)です。&lt;/p&gt;
&lt;p&gt;ただし、コンピュータの世界では2進数が基本なので、コンピュータの世界でのキロ(K)は1000倍ではなく、2^10（2の10乗）の1024倍になります。
したがって、1KBは1000Bではなく、1KB = 1024Bになります。同様に1MB = 1024KB、1GB = 1024MB、1TB = 1024GBとなります。&lt;/p&gt;
&lt;p&gt;1TB = 1024GB = 1048576MB = 1073741824KB = 109951162776B = 8796093022208bit　となり、1TBのメモリには8796093022208個のデータ(0か1）が格納できることになります。&lt;/p&gt;
&lt;h2 id=&#34;課題&#34;&gt;課題&lt;/h2&gt;
&lt;h3 id=&#34;課題１&#34;&gt;課題１&lt;/h3&gt;
&lt;p&gt;Pythonで10進数を2進数に変換するプログラムを作ってください。数値を入力して、2進数の値を0か1の文字列にして、print関数で出力してください。
Pythonには10進数を2進数に変換する便利な関数が用意されていますが、それを使わず、「割り算を使った変換方法」か「の累乗を使った変換方法」でプログラムを作成してください。&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;回答例&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;dec2bin&lt;/span&gt;(x):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	s &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		s &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; x &lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; s
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		x &lt;span style=&#34;color:#f92672&#34;&gt;//=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; x &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#66d9ef&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; s
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;x &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; int(input())
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(dec2bin(x))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;h3 id=&#34;課題２&#34;&gt;課題２&lt;/h3&gt;
&lt;p&gt;Pythonで2進数の文字列を入力して、10進数の数値に変換してprint関数で出力してください。
Pythonには2進数を10進数に変換する便利な関数が用意されていますが、それを使わず、「位取り記数法」でプログラムを作成してください。&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;回答例&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;bin2dec&lt;/span&gt;(b):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	s &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; reversed(b)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	x &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	i &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; c &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; s:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		x &lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt; int(c) &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; i
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		i &lt;span style=&#34;color:#f92672&#34;&gt;*=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; x
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;b &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; input()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(bin2dec(b))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;h3 id=&#34;課題３&#34;&gt;課題３&lt;/h3&gt;
&lt;p&gt;Pythonで10進法を16進法に変換するプログラムを作ってください。数値を入力して、16進数の値を0〜Fを使用したの文字列にして、print関数で出力してください。
また、Pythonで16進数の文字列を入力して、10進数の数値に変換してprint関数で出力してください。
いずれもPythonで用意された関数は使わないで「割り算を使った変換」や「位取り記数法」でプログラムを作成するか、先程作った2進数・10進数変換プログラムを経由したプログラムを作成してください。&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;回答例&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;dec2hex&lt;/span&gt;(x):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	s &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		s &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0123456789ABCDEF&amp;#34;&lt;/span&gt;[x&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;16&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; s
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		x &lt;span style=&#34;color:#f92672&#34;&gt;//=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;16&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; x &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#66d9ef&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; s
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;x &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; int(input())
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(dec2hex(x))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;hex2dec&lt;/span&gt;(b):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	s &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; reversed(b)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	x &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	i &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; c &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; s:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		x &lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0123456789ABCDEF&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index(c) &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; i
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		i &lt;span style=&#34;color:#f92672&#34;&gt;*=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;16&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; x
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;b &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; input()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(hex2dec(b))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
</content>
    </item>
    
  </channel>
</rss>
