なぜ16進法を学ぶのですか?[閉まっている]


28

私は今日、かなりの数のイントロプログラミングクラスを受講しました。主に、私が見つけたあらゆる種類のプログラミングに足を踏み入れるためです。驚くことではありませんが、ほぼすべてのクラスが同じ形式で実行されます。ハードウェアの紹介、ソフトウェアの紹介、そして実際のプログラミングに進みます。ハードウェアとソフトウェアがどのように機能するかを理解することは非常に重要ですが、私は常にすべてのコースにある1つのトピックに混乱しています。

私が見つけたソフトウェアの紹介セクションでは、必ず2進数、16進数、さらには8進数のシステムで読み書きできることに重点を置いています。これらが何であるか、そしてコンピューターがそれらをどのように解釈するかを理解することは良いことだと理解していますが、これらの数値システムの読み書きの方法を実際に知る必要があることはありません。本当に、私がベース10以外のものを見たのはCSSの色の場合だけです。これはwww.colorpicker.comのようなものを使用すればさらに簡単です

プログラミングの世界でこれらの非10進数システムの素晴らしい使用法を知らなかったのですか、それともすべてのプログラミング教科書にこれらのセクションを含めるのは昔からの伝統ですか?平均的なプログラマが実際に8進数を使用する場所の良い例はありますか?


1
平均的なプログラマが実際に8進数を使用する場所の良い例はありますか? はい、航空業界に関連するソフトウェアを作成していることに気付いた場合、4桁の8進数のトランスポンダーコードに遭遇する可能性があります。 en.wikipedia.org/wiki/Transponder_%28aviation%29
ベンコットレル

回答:


14

すべての答えは良いですが、彼らが私が最も価値のある部分だと思うものに対処していません。さまざまなベースで「考える」ことを学ぶことで、コンピューターが数字を処理する方法をより理解できるようになります。

かなりうまく詰め込まれた小文字の文字列を保存したい場合、どうすればいいですか?

さて、26個の小文字があり、5ビットの数値である0〜31の範囲に簡単に変換できます。6個の5ビットの数値を32ビットフィールド(int?)に詰め込み、さらに十分な余りを残します。いくつかの句読点。

私は、hexがこのようなものに役立つと言っているわけではありませんが、数字がどのように変換されるかを理解しています。

別のケースでは、ASCIIでやや長い数字を渡すためにbase-64を使用することがよくあります。これを実装する方法を知っていますか?なぜそのように実装するのですか?ゲームの登録ボックスに「CDキー」を入力するたびに、それがあなたが入力していることだと気づきましたか?

また、楽しみのために、しばらくベース12で遊んでみてください。数学はベース12で非常に興味深いことがわかりました(ベース10は比較して愚かです。6本の指で進化してほしいです。数学の理解が何十年も先になるかもしれません)。非常に賢い初期の人間の中には、ベース12を使用して時計を開発した人もいました。

ベース10には、簡単なパターンを作成する3つの「クール」番号、2、5、9があり、8、6、4が「マイナー」クール番号です。ベース12には、「クール」な数字として2,3,4,6,11があり、「マイナー」なクールな数字として8,9および10があります。つまり、ベース12を使用した場合、数字のパターンを認識しやすくなります。いつも見ているからです。

また、バイナリ。一方で32に数えることができます-私はかなりそれをします、5に数えるだけではそれをカットしない場合に時々役立ちます:)

バイナリはとても楽しいですが、うまく翻訳できません。16進数でうまくいくと、「A」が1010、「5」が0101として表示され始め、これらの問題は本当に重要になり始めます。6番目のビット:00100000を抽出したいビットフィールドがある場合、それを「および」何と使用しますか?0x20であることを知っておく必要があります。

0x0600で何かを抽出するコードが表示された場合、どのビットが抽出されていますか?考えずに知っておく必要があります。実際には、0000011000000000と書かれているように読む必要があります(ただし、ゼロをカウントする必要がないため読みやすくなります)。

脳とデータ処理能力を制限したいのはなぜですか?


実際、時計はbase60で開発されました
デニスドバーナーディ

@Denis Iは、現在の理論は、12を数えた人々が開発したものであり、指が通り過ぎるとは考えられない愚かな人々に負けたという印象を受けていました。60は5つのグループにさらに分割された12のディビジョンだけで、ベース10のうなり声によるアフターハックのように見えます:)
ビルK

かもしれない。正直に言うと、私は決して専門家ではありません。あなたのコメントは、忘れられていた記憶を持ち帰っただけです。360度で測定された角度は60を底とする(そして同じバビロニアの発明者も)ことを思い出しますが、あなたが指摘するように、10のうなりは元の12の数学者を単に圧倒しただけかもしれません。:-)さて、アメリカのインディアンがしたように、20進数で数えていると想像してください。:-D
デニス・デ・Bernardy

44

何を学ぶべきですか?有能なプログラマーになるためには、異なる基数を理解する必要がありますが、16進数については、ABCDEFが9の後に来ることを除いて、学ぶべきことはほとんどありません。


8
OPは、他のベースから10に精神的に転置できることを指している場合があります。これは、ある時点では有用なスキルであった可能性があり、低レベルのプログラマーの特定のカテゴリにとっては依然として有用かもしれませんが、今日ではほとんど無関係です。たとえば、vimで簡単に変換を行うことができます。
ラインヘンリヒズ

そのとおりです。もっと明確にすべきだった。
jwegner

2
@Rein私はそれをするのが得意ではなかったので(頭の中で数学をしなければなりません)、私は言うことができません。しかし、私はかつて精神的に16進数からZ80アセンブリ言語に転置することができました。これは、その時点でできる便利なことでした。16進数から80x86アセンブラー(または何でも)に転置する機能は、今日作業しているプログラマーにとってはまだ有用だと思います。
ニールバターワース

1
@Neil Butterworth:8080オペコードは、メモリが役立つ場合、実際には8進数で見るとより意味があります。それがZ80拡張機能にどのように適用されたかについて、私の記憶は本当にぼんやりしています。
デイヴィッドソーンリー

1
@Neil:重要な部分は、レジスタ間の移動命令で、ビット形式では01xxxyyyのように見えます。xxxは宛先で、yyyのソースです。他に8進数の意味があるかどうかはわかりません。
デビッドソーンリー

18

平均的なプログラマが実際に8進数を使用する場所の良い例はありますか?

オクタル?通常はありませんが、いいえ。ただし、* nixアクセス許可は例外です。

16進数?あなたは賭けます。組み込みシステムの周りのビットをシャッフルしている、プロトコルやファイルレベルをビットレベルなどで見ているかなり多数の私たちを無視しています。しかし、確かに、アプリケーションやWebの仕事をしている金属から遠く離れている場合は、簡単にそれを逃れるかもしれません。

例:マイクロコントローラーなどの構成レジスタ。

キーをランダムにパンチして、番号54312を取得します。どのビットが設定されているかわかりますか?少なくとも私の頭の上ではできません。16進数に相当するのは0xd428です。それ一方で、私が見ているビットパターンは1101 0100 0010 1000であるとすぐにわかります。そのようなことに対してより論理的に構造化されており、金属。上記の数値がmcuからリセットされると、何らかの理由でビット7と9を設定する必要があるとしましょう。16進数では、結果の数値が0xd6a8であることが簡単にわかりますが、10進数ではどうですか?それは54952で、あなたが私に尋ねると直観的なほど近くはありません。確かに、値に640を加算するだけの問題ですが、把握するのは面倒です。もちろん、実際には、ビットを正しい位置にシフトするか、元の値とORするだけですが、最終的な表現が何かを知りたい場合があります。


1
「どのビットが設定されているのかを気にする必要があるのはなぜですか」という質問は、どのような種類のプロンプトです。一部の(多くの?ほとんどの?)アプリケーションでは、これは関係ありません。
ニールバターワース

10
合意-高レベルの開発について話していると仮定します。低レベル、特定のビットが設定またはクリアされるかどうかだけでなく、血まみれのマイクロブートがまったく起動するか、必要な特定の周辺機器に電力が供給されるか、またはyではなくxのクロック速度で実行れるかを決定する場合あります。これはほんの始まりに過ぎません。この種の開発を扱う場合、基本的にはシングルビットが重要です。時々たくさん。繰り返しますが、それはあなたのドメインに依存します、私はちょうど言っています。埋め込まれた世界を忘れないでください。=)
n42

1
+1-マシンに近いほど、異なるベースを使用する必要があります。埋め込まれているだけではありません。ほとんどの言語にはビットフラグがあり、明らかな理由で16進数で書かれていることがよくあります。逆に、最初のプログラミングコースで教えることはかなり無意味ですが、ほとんどの最初のプログラミングコースはかなり無意味です。ほとんどすべてのプログラマーが正しいことを教えますか?

1
@Davor:16進数が読みやすいためです。8桁の16進数値は、32桁のバイナリ値よりもはるかに高速です。
スティーブS

2
@Steve S:正直なところ、私たちも怠け者だからだと思う。0x80は0b10000000よりも書くのが短い。しかし、私は同意します。また、最初のプログラミングコースではほとんど意味がないことにも同意しますが、離散数学、リアルタイムプログラミング、コンピューター編成などに突入するかもしれません。
n42

12

平均的なプログラマが実際に8進数を使用する場所の良い例はありますか?

Unix(またはLinux)のファイルにアクセス許可を設定する場合は、3桁の8進数を使用します。最初の桁はユーザーの権限、2番目の桁はグループの権限、最後の桁は他の全員が取得する権限です。

先週書いたコードでこの事実を理解しなければなりませんでした。

MD5のような標準的なハッシュアルゴリズムの出力を見ると、16進数で記述されていることがよくあります。これにより、異常な基底で算術演算が行われる多くのケースを見てきました。

内部で浮動小数点がどのように表現されているか、したがって1/10が正確に表現されない理由を理解したい場合は、異なる基数で算術を行う方法を絶対に理解する必要があります。これは後部に噛み付く日までは難解な知識であり、急いで実際に理解する必要があります。

そして、そこにあるトンあなたがアップトリミングコンピュータのデータ内部の基本的な性質のバイナリを見つけることができます他の例。もちろん、CRUD Webサイトを作成しているだけの場合、他の誰かがすでに対処したレベルで発生するため、これらのWebサイトに遭遇することはほとんどありません。


4
* nixパーミッションは真の8進数ではありません。これらの表現を使用して数学的な計算を実行することはありません。せいぜいバイナリマスクの8進表現です。
ジョエルイーサートン

@Joel Etherton:ファイルの統計情報からアクセス許可を取得すると、それらはデフォルトで10進数で表示される数値として入力されます。この事実を説明するために必要なドキュメントを書いていました。数学的計算がたくさんありました。
btilly

@btilly:あなたは私が言っていることを誤解しています。ファイルのアクセス許可を755に設定した場合、これを何かに追加する必要はありません。これは、許可の組み合わせを記述する単なるマスクです。確かに(4 + 2 + 1)(4 + 0 + 1)(4 + 0 + 1)を意味することを認識する必要がありますが、これらはまだバイナリマスクの単なる表現です。「file stat」と言うとき、何を指していますか?ベース10で提供されるアクセス許可のファイル統計を見たことはありません(その例に厳密に準拠しています)。
ジョエルイーサートン

1
@Joel Etherton:試してみるperl -le '@stat = stat(shift); print $stat[2]' some_fileと、10を底とする数値として統計が得られますchmod。同じ方法でそれをPerlに渡す必要があります。そのため、データベースにそのように番号を保存するのは理にかなっています。その時点で、それらの番号がより馴染みのあるUnixパーミッションで何をするかを文書化する必要があります。私が言ったように、これは仮説的な例ではありません。
-btilly

@Joel Etherton:パーミッションが419(10進数)のファイルがあるとします。ファイルをユーザー実行可能にしたいが、誰にも読めないようにします。番号を変更するにはどうすればよいですか?C stat()呼び出しで返される値はintです。印刷方法は別の問題です。
バティーン

9

願わくば、現実の世界では、Hexを2進数から10進数に変換することについてクイズが出されないことを願っています。あなたが望む方法を変換するツールを自由に使用できます。

何が起こっているのかを理解しておく必要があることに同意しますが、なぜそれを調べられるのかを覚えておく必要がありますか?

ただし、キー番号(私にとっては0x64 = 100、0xFF = 255、0xFFFF = 65535など)が頻繁に表示されるため、覚えておくと便利です。

8675309が2進数、16進数、8進数であるものをガタガタ鳴らせますか いいえ。ただし、必要なときにできるツールを開くことができます。


3
あなたは、一般的にCONSTとして使用し、57005を忘れてしまったelvis = 57005;
ベヴァン

5

私がこれまで8進数を使用したことがあるのは、Unixシステムのファイル許可だけです。

16進およびバイナリは、ワイヤプロトコルに近い、または金属データ転送に近い作業を行う場合に非常に役立ちます。基本的に、データはバイナリで流れます。これは、ニブルを一度に16進数で表すのは簡単です。

また、データシートでは16進値が引用されることが多いため、データシートに表示される値をコードで表示する方が適切です。

それらのいずれかを多く使用すると、少なくとも一般的な値については、頭の小数への変換と頭からの変換にかなり熟練することになります。

言ったことすべて。重点はほとんど歴史的なものだと思います。あなたが言うように、10進数以外のものをほとんど必要としないプログラマがたくさんいます。


5

あなたは実際に2つの数値表現の力を学ぶ理由を尋ねていますか?

コンピューターは回路構成され、電流は2つの異なるレベルの回路を流れます.2つのレベルの電流を表すために、高低の2つのレベルを表します.1(高)または0(低)の2つの状態を保持できるため、2進数を使用します。

2進数はパターンを形成します。私はので1000001.:あなたと私が話すことができる唯一の方法は、回路出ている場合たとえば、私たちは、あなたが私に手紙Aを送信する場合は、あなたが私にバイナリパターンを送信することを確立することができます怠惰な、 7桁の7桁を記憶したくありません。むしろ、2のべき乗の番号付けシステムを使用して、大きな2進数を小さな1桁に表現します。8(2 ^ 3)または16(2 ^ 4)を使用できます。

ご覧のとおり、ほとんどのコンピューターハードウェアおよびソフトウェアはバイナリ表現を使用しており、人間は8進数や16進数などの2の表現を使用して、より効率的で痛みのない方法でバイナリ表現を読み取ります。

今、 2つの表現の力を理解する必要が平均プログラマの:

  1. ASCII
  2. Unicode
  3. メモリ管理プログラミング(スタック、ヒープ、メモリアドレス、コアダンプ)を理解する
  4. デバッグ
  5. バイナリデータの読み取りは、主にHexエディターで行われます。

私の最後の2セントは、2つの表現の力をすぐに学ぶことができると確信しています(すでにイントロプログラミングコースを管理しているため)..あなたは変換を忘れるかもしれませんが、あなたが望むなら外国の概念であってはいけません平均的なプログラマになるために


3

私は8進数を使用したことはありませんが、デバッガーで16進数が表示されることは珍しくなく、ソースコードで16進数を使用する方が理にかなっています(通常、基になるデータはビットフラグであるため)。


3

最近、多くのニーズがあるかどうかはわかりませんが、何年も前、私がシステムプログラマーだった頃、hexを読んで理解できることが不可欠でした。ストレージダンプ(すべて16進数)が表示され、16進数表現をデコードしてIBM Assembly言語に戻します。しばらくそれをした後、あなたはそれを直接行うことができるようになります-ヘックスを読んで、同等のアセンブリを書きます。デバッグに非常に便利です。16進値の加算と減算は、ベースレジスタからのオフセットの計算に役立ちました。

現在、実際にそれを必要とすることはほとんどないと思いますが、それについての知識はほとんど悪いことではありません。


それは私がヘックススキルを習得した場所でもありました。後に、VAX / VMSでシンボリックデバッガーなしでコードをデバッグすることを余儀なくされたとき、シャープになりました(シンボル情報なしで顧客にコードを出荷しました)。現在、私はめったにそれを使用しませんが、特定のURLの情報を16進数でエンコードしますが、その場でデコードできると便利な場合があります。
-TomG

3

バイナリ/ 16進数の読み取りに「流fluent」であるということではありませんが、それらに遭遇するとすぐに精神的な変換を行うことができるほど快適です。単純な計算に慣れることなくプログラミングを想像してください。2を掛ける必要があるたびに計算機に行く必要がありました。

16進数/バイナリは、コンピューターが話す言語であるため重要です。特にデバッグ演習を行ってデータが16進数である場合は、常にその場所で遭遇します。

また、内部で異なる数値型がどのように表現されるか、および算術がどのように機能するかという文脈で、base-2を理解することの重要性を強調します。これにより、たとえば、浮動小数点の丸めの問題や整数のオーバーフローに対処するタイミングと方法をよりよく把握できます。

もう1つの例として、ビット単位の操作とビットフラグはプログラミングでまだ一般的です。これは、base-2の理解が重要な別の場所です。


2

実際、ベース10以外のものを見たのはCSSの色の場合だけで、

Unicodeコードチャートで文字を検索する必要はありませんでしたか?含まれているURLを見たことが%20ありませんか?GUIDを使用したことはありませんか?IPv6アドレスを見たことがない?BLOBSQLでリテラルを書いたことはありませんか?16進エディターでファイルを表示したことはありませんか?ありますたくさん conventially進で表記だコンピュータ関連のもののは。

8進数については、今日ではまれですが、Unixファイルシステムのアクセス許可に使用されています。

参照:ビット演算の実際の応用

たとえ「ワイヤーに近い」プログラミングを行うことを避けられたとしても、コンピューターがバイナリーで動作するという事実に注意することが重要です。1つの単純な理由:Abstractions leak

intほとんどの言語の抽象化は、固定幅の性質を漏らします。整数はオーバーフローし、2 31のような「丸い」2進数でオーバーフローします。10進数のみの思想家は、2038年のバグを説明することはできません。

float/ double抽象化はあなたが書く場合は2のその基数をリークし0.1、あなたが本当に0.1000000000000000055511151231257827021181583404541015625を取得します。正確な0.1を期待している場合は、バグが発生します。


2

他のベースでパターンが単純な特定の数字を認識することは、バグを解決する際の大きな手がかりになることがよくあります。あなたの答えが347だけ間違っている場合、それはおそらく何の意味もありませんが、256または128だけ離れている場合、おそらくそれは何かを意味します。符号なし16ビットデータ型に-1を入力すると、65535を取得します。これは65536よりも1少ない値です。2^ 16を知っている場合は、すぐに問題を発見できます。

8進数については、これらの質問を見て、誤って8進数を要求したときに8進数を認識することで、これらの人々がプログラマーを改善できるかどうかを確認してください。


1

これらのシステムとその仕組みを理解するときに使用できる、非常に効率的な数学とデータ圧縮のテクニックがいくつかあります。おそらく最初のいくつかのジョブではあまり使用しないでしょう。しかし、あなたがシニアになったときにバックポケットにそれらを入れて、あなたは力不足の過労恐竜サーバーで実行されている過労のレガシーシステムを作るように求められます。
APIを持たないコントローラーや電子機器を扱う場合は、より重要になります。特にそのAPIを書いている場合。


1

コンピュータサイエンスの研究の一部であるプログラミングコースの概要では、その資料をよく理解することは非常に理にかなっています。アセンブリ言語でプログラミングするとき、ハードウェアを設計するとき、形式言語のコースを受講するときなど、トピックを再訪します。私の大学のすべての電気技術者は、プログラミングのイントロのコースを必要とします。それ以外では、それほど重要ではありません。


1

8進数は、文字セットを扱う場合に役立つことがあります。後者はバイトベースであり、1つの8進数= 8ビット= 1バイトです。たとえば、UTF-8では、非ASCII文字に2バイト以上を含めることができます。8進数は16進数よりも表現に便利です。

ビットが便利な理由は...ちょっと!コンピューターが常に0と1を処理していることを知っていますか?つまり、1 + 1 = 10であることを知っているのはコンピューターサイエンティストだけであるという冗談を言うだけではありません。ビット関連の演算子や変数としても役立ちます。後者を使用すると、一連のフラグを処理するときにデータベースのストレージ要件を削減できます。

16進数については、RPGキャラクターのステータスと装備を向上させるために16進エディターを開いたことがありません。キャラクターエディターをダウンロードする代わりに、そうすることで、16進数の意味を理解できるのがなぜ便利なのかがよくわかります。;-)


あなたは「オクテット」ではなく「オクテット」を意味すると思います。1桁の8進数は3ビットです。非ASCII文字に8進定数を使用することは、ほとんどのドキュメントで8進表現を使用したPDP-11で開発されたCの初期の時代からの引き継ぎです(このPDP-11リファレンスカードを参照)。
TMN

かもしれない。英語は私の母国語ではありません。:-)
デニスドバーナーディ

1

私は3年前に大学を卒業しましたが、16進数を読み書きできることが非常に重要だと思います。仕事用の大きなXMLファイル(100MB以上を意味する)が大量にあります。場合によっては、テキストエディターでは表示できない無効なXML文字を訴えるXMLファイルを取得するため、16進エディターを使用して無効な文字を特定するコードを記述する必要がありました。このタスクは、16進数がわからなければ非常に困難です。


1

何年も前に、8ビットシステムで作業しながら16進数の価値を学びました。

何かがB000またはE7FFにあることを理解しているのは驚くべきことでした。

昨日、テキスト行の末尾にある文字を正確に知る必要がありました。0x0Aと0x0A 0x0Dの違いを知ることは非常に重要です。


1

平均的なプログラマが実際に8進数を使用する場所の良い例はありますか?

最近の8 進数は非常にまれですが、16進数は非常に頻繁に使用し、バイナリの問題についてよく考えます。

私は主にObjective Cを使用してCとC ++でプログラミングし、LinuxとMac OS Xのラスターグラフィックスとベクターグラフィックスで多くの作業を行います。これらの分野では、効率的に実行し、ストレージを有効に活用するコードを書くことが重要です。また、マシンが作業対象を内部的に表す方法を理解する必要があります。それを調べる最も便利な方法は16進数です。たとえば、標準の24ビットカラーピクセルは3バイトで表され、0x000000が黒、0x00FF00が赤、0x008000がピンクであることが一目でわかると、本当に便利です!

また、ファイル形式の国際標準にも多く取り組んでいます。私が最近取り組んでいるのはMXFです。MXFは、放送用のビデオ、DVDなどを保存するために使用されます。これはバイナリ形式であり、これも16進数または場合によってはバイナリを使用して最も簡単に処理できます。一部のMXFベースのビデオがシステムで正しく再生されない理由をデバッグする場合、32ビットフィールドを一目見れば、画面を空白にするビットが誤って設定されていることに気付くことができ、非常に便利です。それは16進数ですが、10進数ではほとんど不可能です。

あなたがPerlを書いてテキスト文字列をマッサージするのにあなたのキャリアを費やすつもりなら、あなたはおそらく16進数、8進数、または2進数に精通する必要はないでしょう。しかし、あなたが私が行う種類のことを始めた瞬間、少なくとも16進数と2進数が不可欠です。


0

プログラマになりたい場合は、16進数を知っている必要があります。あなたがそれを理解する必要のあるまれな日にあなたがそれを理解していないことを仕事で認めなければならないのは、あまりにも厄介です。

頭に16進数を追加できる必要があるという意味ではありません。とにかくそうするなら、それは規則的な追加の規則を台無しにし始めます。:)


0

バイナリ、16進数、8進数の共通点は、それらがbase10ではないということではなく、すべて2のべき乗であることです。コンピューターは本質的にバイナリであるため、データを表示および処理するのに最も適切または効率的な方法であるアプリケーションがそれぞれに与えられます。

これは、以前はすべてのプログラミングが低レベルだったときに非常に重要でした。今日の高レベルのプログラミングでは、2のべき乗数システムはそれほど重要ではありません。すべてのプログラミングコースでそれらを徹底的に紹介することは、昔の遺物かもしれません。

ただし、これらの数値システムには、高水準言語で作業している場合でも、まだ用途があります。たとえば、色は24ビットで保存され、原色ごとに8ビットです。また、16進数は人間が読める方法でバイトを表現するための最良の方法であるため、CSSの一部でさえあります。

バイナリを理解しないとコンピュータを理解できません。バイナリ入門は、プログラミング入門のすべての必要な部分です。日常の業務では、番号体系間で多くの変換を行う必要はないかもしれませんが、そのような演習を行うことが、これらの番号体系に精通する唯一の方法です*。複数の非base10番号システムを知ることが適切に理解する唯一の方法であり、データは多くの方法で表すことができ、それらはすべて有効です。

  • ジョン・フォン・ノイマンが言ったように、「[..]私たちは物事を理解していない、私たちはそれらに慣れる。」

0

あるベースから別のベースへの変換は、プログラミングにとってそれほど重要ではないと思います。高レベルのプログラミングでは、変換は必要ありません(必要な場合は、lib関数と電卓を使用できます)。低レベルのプログラミングに飛び込むと、入門コースではなくなります。

基本コースでは、2つの(関連する)問題を扱うことが重要だと思います。

  1. エンコードについて。数学的変換ではなく、情報(あらゆる種類の情報)を格納するために数字(あらゆる種類の数字)を使用することです。必要に応じて、モールス信号でこれを説明したり、数字でペイントすることもできます。しかし、コンピューターはむしろバイナリを使用し、バイナリは通常16進数として表示されるため、物事は通常ヘキシーの例で説明されます。(そして、彼らがそれに取り組んでいる間、彼らはこのトピックで言及されている行末について少し説明するかもしれません。 、CRLF、 '\ n'および '\ r')

  2. オーバーフローの問題。繰り返しますが、これを16進数で説明する必要はありません。y2kの例(16進数とは何の関係もありません)を使用できます。ここでも、さまざまな最も可能性の高いインジケーター(255、32767、65535、2M14)を認識することをお勧めします。内部ストレージですが、変換は重要な部分ではありません。

私はあなたがビットフラグのためにそれを知る必要があることに同意しません(プログラミングの入門コースでは、名前付き定数ははるかに教育的で有用です。)


0

低レベルの組み込みプログラミングを行う場合は、16進数を使用します。ハードウェアレジスタのビットパターンの指定、メモリダンプのバイト値の指定などに使用されます。また、使用するプログラミング言語でビットごとの演算子を使用することも学習します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.