変数101:コンピューターを知る

悲しいことに、私はこの2018年をプログラムすることを学びたいと思っている人はあまりいないことを知っています🙁 前の記事 人と少し時間が経ってからフリーソフトウェアプロジェクトにコミットを送ることができれば、私は自分の仕事に満足するでしょう🙂

セキュリティを愛する人のために、以下がセキュリティのやることについての投稿になることを約束しますので、誰かが何か他のもの(git、サーバー管理、または私が知らない:pなど)を学びたい場合、またはコメントボックスで簡単に答えることができない他のトピックにコメントしてください、私に知らせてください、そして私たちはそれをどのように動かすことができるかを見ることができます😉

さて、さて、前にタイピングについて話しましたが、これはプログラムに変数を保存する方法と関係があるということですが、今度は内部で何が起こっているのかを少し確認し、うまくいけばそれを確認します十分に明確にすることができます。

ビット

これは私がプログラミングについて書くときにいつも触れているトピックだと思います。確かにそれは私を魅了し、多くのことを理解するのに役立ちました。それでは、それらがどのように、どのように読まれているかを少し説明しようと思います。彼らは何のためにあるのか🙂

電灯のスイッチを考えてみてください。回路が閉じているとき、私たちは 0 画面上で、スイッチの位置を変更すると、 1🙂簡単ですね。

今、 0 と 1 彼らは多くのことを意味することができます、それはあなたがそれを取る創造性に依存します、誰かが北に行くのか南に行くのか知りたいと思います、 1 北を意味することができます 0、sur🙂誰かが男性か女性か知りたいとしましょう、 1 それは男でありえますそして 0、女性🙂。 この人が若いか年配か(> 22)を知りたいのですが、 0 若いことを意味することができます 1、より高い。 想像し続けましょう…ペットはいますか? 1 はいと言いますが 0 いいえと思います今、私はあなたに私と一緒に次の行を読んでもらいたい:

1001

これは言う短い方法です...

Una jóven mujer de no más de 22 años se dirige al norte acompañada de su mascota.

これは次のものとは大きく異なります。

0110 o Un hombre con más de 22 años de edad se dirige solo hacia el sur.

バイト

それでは、さらに一歩進んで、バイトの読み取り方法を学びましょう。 バイトは8ビットのシーケンスであり、右から左に読み取られ、それぞれが読み取られます。 1 の力を表す 2 に上げられた n どこ n ビットの位置です。 中国語のように聞こえるので、少し例を挙げましょう🙂

01001011 このバイトがあります。右から左に移動します(<-)意味を記述できるように、上から下に配置します。

1:所定の位置にあるときのビット 0 次の2つをゼロにするか 2^0。 私たちが知っているこれは、 1.

1:XNUMX番目のビット、現在の位置 12^1 これは言うのと同じです 2

0:XNUMX番目のビット...これは 2^2、でもオンになっていないのでオンのままにしておきましょう 0

1:XNUMX番目のビット、 2^3 u 8 🙂

0: と同じ 0

0:その他 0

1:今、私たちは 2^6 o 64

最後に 0 、それが何を意味するのかはすでにわかっています🙂次に、結果を追加して、次の表と比較します🙂 75 だから、列でそれを探しましょう 10進数 に何が表示されるかを確認します チャー

アスキーテーブルの画像結果

私たちはXNUMXつ持っています K!! おめでとうございます、あなたはすでにバイナリで読む方法を知っています🙂しかし、最も賢明な人は、XNUMX進数も取得していることに気づいたかもしれません、そしてそれは限界があります(すべての値が 1)その制限は数にあります 255.

Word

今では複数の人が教えてくれますが、より大きな数が必要な場合はどうなりますか 255? または、日本語のような他のキャラクターはどこにありますか? 答えは簡単です、まとめましょう 2 bytes。 XNUMXつあるので、可能な組み合わせの数は次のようになります。 2^16 o 65536 次のような考えられる結果 0 それらのXNUMXつであり、可能な最大値は 65535。 その番号は誰かに鐘を鳴らしますか? Linuxシステムのポートの最大数を覚えていますか? 私は彼らに宿題を残します😉

ダブルワード&クワッドワード

より数学的なものについては、特定の形式もあります。 ダブルワード 多くの人がすでに想像しているように、 2 word o 4 bytes (o 32 bits)情報の、言うのと同じ:

11111111111111111111111111111111 へ 0 a 4 294 967 295

この時点で、多くの人が負の数はどうなるのか疑問に思うでしょう。つまり、どこかで考えなければなりませんよね? 負の数を格納できるようにするために、プロセッサ開発者は左側の最初のビットを符号値として​​使用することを選択しました。 これは、最初のビットが 0 私たちは正の数について話しているが、もしそうなら 1 ネガティブです。 なぜビットが特別なのかを見てみましょう。好きなようにできます😀

しかし、これにより、乗算を実行する位置がXNUMXつ少なくなることは明らかです。 だから私たちの0 a 4 294 967 295 になります:

-2,147,483,648 a +2,147,483,647

今、私たちの多くはすでに持っています 64 bits、これはの値です クワッドワード、からの範囲の値を持つことができます 0 a 18 446 744 073 709 551 615。 それは大きな数字です🙂

なぜ8ビット?

これは複数の人が疑問に思うかもしれないことであり、答えはハードウェアにあります。 プロセッサは当初から、操作を実行できるようにするためにデータを必要としていました。 データはコンピュータのメモリに保存され、プロセッサがデータを必要とするたびに、データバスを使用してデータを取得します。 古代では、これらのバスは8サイクルあたり最大8ビットを通信できました。これは、データを移動する最大かつ最も効率的な方法がXNUMXビットをグループ化してプロセッサに送信することを意味します。

時間の経過とともに、今日まで、プロセッサは16ビット、32ビット、および…64ビットを移動する機能を開発してきました。

タイピングとは何の関係がありますか?

私たちは今、すべてが理にかなっている部分にいます🙂入力は、プログラミング言語がこれらのメモリ空間に名前を付けるために使用するプロパティです。 すべての変数は、それらが何と呼ばれているかに関係なく、これらのタイプのデータのXNUMXつに対応するものがあります。 これらはとして知られています プリミティブデータ型強く型付けされた各言語には、これらの値の概念と、それらが表す量があります。 たとえば、Cにはライブラリがあります limits.h これは、プリミティブ値の最大量と最小量を示しています。

値のXNUMXつを壊そうとするとどうなるか見てみましょう。

自分の。 クリストファーディアスリベロス

右側にはファイルの値があります limits.h 左側では、これらの値のXNUMXつを使用しています(unsigned short int)そして、対応する番号よりも大きい番号を割り当てました。 その結果、コンパイラは、のバイナリ形式が原因でメモリを誤用していることを警告します。 66666 のバイナリ形式に適合できません 65535。 これは私たちのレッスンにつながります パフォーマンス 私たちがプログラムするとき、あなたの価値が時間の経過とともにあまり成長しない場合、またはあなたがの値と同じくらい大きな値を必要としない場合 o クワッドワード正しいタイプを使用すると、CPUが要求するメモリの量が減ります。これは、データが適切に計算されている場合、データの取得速度が上がることを意味します。

通訳側では、これは次の理由で簡単です。 暗黙の変換。 CjavascriptやPythonなどの言語で変数を定義する場合、インタープリターはそれがどのタイプであるかを理解し、操作を実行するのに十分なメモリスペースを割り当てる責任があります。 簡単な例を見てみましょう🙂

自分の。 クリストファーディアスリベロス

ご覧のとおり、変数の型の割り当てとメモリへの保存を担当しているため、Pythonインタープリターに変数の型を説明する必要はありません🙂

あなたの変数を知っている

これは、使用する実装の言語とタイプによって異なりますが、プログラミングできるようにするための最初のステップは、使用できる変数を学習することです🙂変数を理解すると、次のことができるようになりますそれらを効率的かつ論理的に使用して情報を保存する(ユーザーまたはシステムによって提供される)。 これはプログラミングラダーの最初のステップであり、この記事を読んだ後、コンピューターがどのように機能し、どのように情報が格納されるかをよりよく理解できるようになることを願っています。 次の記事まで私と一緒にいます。コメントを残して、特定の点について補強したりコメントしたりする必要があるかどうかを確認してください。 よろしく


記事の内容は、次の原則に準拠しています。 編集倫理。 エラーを報告するには、 ここで.

41コメント、あなたのコメントを残してください

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   ルイス

    よく書かれ、簡潔で明確であると同時に、すべての聴衆にとって興味深いものです。 良くやった。

    1.    クリスADR

      どうもありがとうございました🙂

  2.   フアン・ヘスス

    素晴らしい説明。 あなたは機械です。

    1.    クリスADR

      ありがとう

  3.   ルーベン

    非常によく説明された感謝

    1.    クリスADR

      完全に読んでくれてありがとう🙂

  4.   ディエゴ

    すばらしい、入力してくれてありがとう。 また、バイナリの問題を利用して、IP、サブネットなどのクラスを提供する可能性があります。 プログラミングの問題ではないことは理解していますが、その問題の適切な説明は常に保留されています。
    繰り返しになりますが、説明ありがとうございます

    1.    クリスADR

      こんにちはディエゴ、それはできます🙂私もあまり主題に触れていませんが、記事でそれについて共有する何かを探すことよりも調査するより良い方法はありません🙂私たちはそれをリストに残します次の投稿にはすでに主題があり、強化に対処する予定だからです。 ご挨拶🙂

  5.   ペドロ

    あなたは優秀な教師であり、あなたが知っていることを教えることに非常に寛大です。 おめでとうございます。

    1.    クリスADR

      どうもありがとうペドロ🙂私はまだ教える場所を探しています、残念ながらここペルーでは技術的な専門職学位しか持っていないときは難しいので、今ここで大学の勉強を続ける可能性を探しています外国人の修士号にも当てはまります。知っている人は、すぐにそのようなものを与えることができるかもしれません🙂しかし、間違いなく教えることは私の一日を作るものです🙂ご挨拶

  6.   何か

    私は主題のより良い説明を読んでいませんでした、最初の例は素晴らしいです

    その単語(16ビット変数など)、ダブルワード、またはクワッドワードは聞いたことがありませんが

    「すでにプログラミング」に関係なく、投稿は興味深いものです。 問題がある場合は、変数サイズの例としてC(limits.h)を使用することを投稿します。Cには、存在する最も具体的な仕様がありません。

    1.    クリスADR

      こんにちは何か🙂ありがとうございます、途中で例を思いつきました😛それは確かにアセンブリを少し読んだ人にとっては既知のデータであり、それはプロセッサが理解していることです🙂ハハハ確かにCはあまり具体的ではありません、しかし、これは、移植性とそれがサポートするさまざまなアーキテクチャが非常に多様であるため、Cが真に移植可能であるために各タイプのプロセッサに対応する必要があるためだと思います🙂
      共有してくれてありがとう。

  7.   セルジオ

    Unnnこの一連のチュートリアルがさびに基づいていたら面白いでしょう、私はそれが今日開発されている最も興味深い言語のXNUMXつだと思います。
    私は彼の後ろにいますが、それは難しい言語であると認識していますが、素晴らしい未来があります...
    あなたの次の記事を楽しみにしています、彼らは本当に面白いです。
    ご挨拶。

    1.    クリスADR

      こんにちはセルジオ、それは確かに興味深いでしょう、私はGNOMEがそのプログラムのスイート内にRustを実装することを計画していると聞きました、私はまだ彼らが意図する完全な範囲を見ていませんが、移行が来ています。
      言語に関しては、私はまだCを学んでいます。今後数か月以内にカーネルで開発を開始できるようにしたいと考えています。新しい言語のレビューを開始する前に、いくつかの言語を深く学ぶことを好みますが、できます。そのドキュメントはそれ自体でかなり見栄えがするので、間違いなく何か面白いものを探して、Rustでいくつかの例を実行してください。
      共有してくれてありがとう🙂

  8.   デイビッド

    この記事と前の記事の両方で、非常に良い説明があります。 私が非常に興味深いと思うこのテーマを続けていただければ幸いです。

    1.    クリスADR

      こんにちはデビッド、私はまた、執筆を続け、特にフリーソフトウェアに参加するように人々を動機付けたいと思っています。今では非常に多くのプロジェクトとニーズがあるので、開発するための余分な手がいくつかあるのは素晴らしいことです🙂
      よろしく

  9.   マート

    チューリングマシンについて投稿していただけますか?

    1.    クリスADR

      こんにちはマート🙂いくつかのコメントで私たちは以前にそれに触れたことがあると思いますよね? 私はこのテーマについて何か面白いものをまとめることができると確信しています🙂何が出てくるか見てみましょう。 初日から今日まで、私のすべての記事を読んでくれてありがとう。いつもあなたがとても興味を持っているのを見てきました🙂

  10.   アランララ

    うわー、なんて良い説明ありがとうございます。

    よろしく

    1.    クリスADR

      どうもありがとうアラン🙂よろしく

  11.   ラモン・イダルゴ

    私はあなたの前の投稿を読みました! 言葉がわからなくなることはないと思いますが、説明ありがとうございます。

    1.    クリスADR

      こんにちはラモン🙂両方を読んでいただきありがとうございます。 それが有用である場合、«ワード»はバイトの進化であり、8ビットが存在する前、16ビットの後などのプロセッサのようなものです...これは、毎回より多くのスペースが必要になるためです。プロセスとより良い速度またはパワー...「バイト」のスペースが不足したために「ワード」が生まれました。「ダブル」および「クワッド」ワードと同じです🙂それは私たちにパワーを追加させる自然な進化ですと開発を続けるためのスペース🙂

      よろしく

  12.   匿名の

    この2018年私ははいまたははいをプログラムすることを学びます、ありがとう

    1.    クリスADR

      嬉しいです🙂頑張ってください!! よろしく

  13.   ビル

    どうもありがとうございました、それを続けてください。 私はすでにプログラミングの方法を知っていますが、私の独学のプログラミングは悪い習慣でいっぱいであるというあなたの教えを待っています。

    1.    クリスADR

      ありがとうGuillermo🙂次の投稿でも面白いものを見つけていただければ幸いです🙂ご挨拶

  14.   エドガー

    簡単な説明は常に最高です..優れています..
    私はgitを提案します...プログラマーにとっては、チームとして作業し、作業を整理したい場合の基本です..バージョン..

    1.    クリスADR

      非常に本当のエドガー、私はそれについてのコンテンツを投稿しようとしますが、gitドキュメントはすでに豊富で、いくつかのものはすでにいくつかの言語に翻訳されているため、新しいことを言うのは非常に難しいです。 私に何ができるか、挨拶と共有してくれてありがとう

  15.   ティリリリ

    こんにちは、0から18までの数値446 744 073 709 551 615は64ビットの2進数値に対応しますか、それとも別の値を参照しますか?64 ^ 18の累乗を計算すると、次のようになります。446 744 073 709。

    1.    クリスADR

      こんにちはTiririri、丸めの問題があると思います。コマンドを使用してみてください bc? は、可能な限り正確になるように設計されたプログラミング言語です。その中に入ると、実行するだけで済みます。 2^64、多分それはそれを解決するでしょう🙂それがどのように進んだか教えてください、挨拶

      。 実際の値は18 446 744 073 709 551ですが、616が可能な値としてカウントされるため、1を減算しています🙂

      1.    ティリリリ

        おかげで、私はネットで見つけた電力計算機でそれを計算しました(https://es.calcuworld.com/calculadoras-matematicas/potencias/)そしてそれはそれが私に与えた結果でした。
        はい、私はすでにbcコマンドを試しましたが、それはあなたが書き留めた価値を効果的に与えてくれます。

  16.   ティリリリ

    こんにちは、limits.hライブラリを参照している画像は非常に小さく、読むことができません(少なくとも、誰もが読んだように見えるので、読むことができませんでした)、そして私はそれを理解していません私はもう読み続けません。 あなたがそれを変えることができるかどうかはわかりません、私はあなたにそれを気にしないことを望みます。

    1.    クリスADR

      あなたはモバイル版を試すことができます、それらは少し明確に見えます、それはワードプレスのテーマです:/一方、すべてのCヘッダーは/ usr / include /にあります、この場合あなたはそれを直接読むことを選ぶことができます簡単です🙂もっと大きな画像をアップロードして、それが役立つかどうかを確認します

      1.    ティリリリ

        おかげで、私はこれに我慢するべきだと思います、ふふふ。

  17.   カテキョウ

    記事をありがとう、言語の変数と表現の範囲を少しよく理解しましたが、ライブラリ「stdint.h」を使用し始める必要があると思います。記憶は貴重であり、使用されるものに注意しなければならなかったので、古い学校に教えられました

    1.    クリスADR

      家庭教師ヒットマンREの理由はありません。確かに標準ライブラリを使用する方が良いですが、uint_least8_tとuint_fast8_tを区別するものを知っている方が良いと確信できます。これは、目標であったプリミティブデータ型を知ることによって達成されます。投稿の🙂コメントと記事を読んでくれてありがとう、挨拶

  18.   ビクター

    :または見事な説明! 私は概念の一部を知っていましたが、この投稿から多くの新しい知識を得ることができます

    1.    クリスADR

      ビクターさん、ありがとうございました🙂この記事がお役に立てば幸いです。

  19.   Guille

    プログラミングを簡単にするためにPythonが本当に好きでした。 http://zetcode.com/gui/pyqt4/ 私は次の最後のテトリスが大好きでした: http://zetcode.com/gui/pyqt4/thetetrisgame/
    私は夏の間にこのテトリスをレタッチして、ポイント、マルチプレイヤー、音楽を少しずつ、しかし非常に面白いものにしました。

    1.    クリスADR

      こんにちはGuille、あなたが取り組んでいるソフトウェアが少しずつ成長するのを見るのは確かに非常に面白いです🙂それは比類のない経験です、そして誰かがあなたが開発しているものが有用であるとわかったとき、それは別の世界からです😀ありがとうございます共有するために🙂

      1.    Guille

        私がアップロードしたもの(音楽用に30Mb) http://guillermo.molleda.com/Tetris9.7z
        プレイヤーごとに異なる初速度を設定する必要があります。または、新しいゲームの後にポイントを再開する場合は…、XNUMX人の娘が私と遊ぶためのXNUMX人のプレイヤーがいます。 それも中毒性があります。