• ベストアンサー

CPUが読み込むのは0と1の2進数ですよね? それ

CPUが読み込むのは0と1の2進数ですよね? それを機械語マシン語というんでしょうか? しかしネットの記事でこういう画像があったんですが、機械語が0と1ではなく 数字と英語の組み合わせになっていたり、0と1を機械語だと言っているサイトもありました。どういうことなんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • takncom
  • ベストアンサー率16% (15/91)
回答No.6

前の回答でCPUには16本とか線があると書きましたよね。 その16本の線の状態が55の時、つまり16進数の55という時は以下のようになります。 0000 0000 0101 0101 上記の2進数が16進数では55となるわけです。 これは、分かりますでしょうか?

okwaveokw
質問者

お礼

55がのところはなんとなくわかります2進数で55を表現したということですかね? 16本の線ってなんでしょうか?

その他の回答 (10)

  • heyboy
  • ベストアンサー率21% (1852/8726)
回答No.11

度々、失礼します。 どうもモヤモヤすると 言うか、 その、投げやりではないつもり ですけど、 https://item.rakuten.co.jp/booxstore/bk-4877833617/?scid=af_sp_etc&sc2id=af_113_0_10001868&icm_cid=16045249821&icm_acid=255-776-8501&iasid=wem_icbs_&gclid=Cj0KCQjwmuiTBhDoARIsAPiv6L8KpNMTFY6lrLlMtCXTQ49U_T3t2glSVHk4H6fXbEyk0lcBs3RlepYaAjzcEALw_wcB&icm_agid=132508474293 ↑こう言う書物でも 読んで下さい。 自分はx64CPU関係の本は 読んでませんけど 多分、最初の2バイトか 3バイトがCPUの命令文 なハズですけどね。 それと、もしかしたらですけど 質問の画像は 「逆アセンブラ」 (逆アセンブラとは拡張端子の COMもしくはDLLなどの 実行ファイルを解析して ニーモニック化する方法) だと思うのですが、 それから、プログラムを 解析するのですか? それはとてもお勧め出来ません だってベタな機械語なので 専門家でも難しいです。 それと最後に フリップフロップ回路 https://e-words.jp/w/%E3%83%95%E3%83%AA%E3%83%83%E3%83%97%E3%83%95%E3%83%AD%E3%83%83%E3%83%97%E5%9B%9E%E8%B7%AF.html が、CPUとの元になる 回路です。 その ソフト面だけでなく ハード面からも 知識を知りましょう。

okwaveokw
質問者

お礼

ありがとうございます

  • heyboy
  • ベストアンサー率21% (1852/8726)
回答No.10

https://www.infraexpert.com/study/ip2.html ↑16進数を知ってますか? 4bitを0から9とAからFで 表す方法です。 それで0と1が機械語に 変換出来ます。 しかし、機械語だと 人間には理解出来ないから 人間にもわかるようにしたのが ニーモニック(図で言う右側) なのです。

okwaveokw
質問者

お礼

ありがとうございます

  • kzr260v2
  • ベストアンサー率48% (775/1588)
回答No.9

CPUが直接扱うプログラムコードと、プログラムコード内で扱うデータの違いについて、ご理解なされば解決すると思います。 CPUは物理的な機械です。この機械は電気の仕組みを利用していて、基礎となっているのはトランジスタという部品です。CPUがおもに使用するトランジスタの仕組みは、電気の流れを流したり止めたりする機能なのですが、膨大な数のトランジスタを使うことでCPUを成り立たせています。intelのi7シリーズだとしたら、型番毎に違いがありますが、8億個から19億個くらいのようです。このトランジスタの電気は、まさに0か1を表します。それらの仕組みによって成り立つCPUには、プログラムコードが2進数(実際は16進数)だと都合が良いのです。その16進数のコードがマシン語で、マシン語をちょっぴり読みやすく扱いやすくしたのがニーモニックです。 そしてプログラムコードは、我々人間の要望を叶えるべく、10進数の値を計算したり表示したりします。文字(テキスト)を扱う場合もあります。静止画や映像を扱う場合もあります。ゲームのようなリアルタイムの描写をすることもあります。プログラムコードのひとつひとつのステップでは、16進数のコードが実行されますが、そのコードがとてつもなく大量になり複雑な作業をこなすことで、様々なことが実現しています。 ※ すこしややこしい部分があります。 実行結果は、ファイルとしてストレージに保存されたり、画面に表示されたりしますが、現状のパソコン上のアプリは、直接ハードウェアにアクセスできなくなっていて、実際のところはOSに任されます。アプリ開発時は、OSのAPIの使い方を学ぶか、APIを扱いやすく隠蔽した、いずれかのライブラリを使用します。 そして、アプリをステップ実行したとしても、一般的に追うことができるのはAPIにリクエストしたところまでです。OSやデバイスドライバをデバッグできる環境を整えれば、ある程度は追えると思いますが、質問主さんに必要ないことと私は思います。 ※ 以前のパソコンのCPUは、今のような巨大で複雑ではありませんでしたから、CPUの動作と、プログラムコードが実現しているものが、イメージしやすかったようです。どうしてもそのあたりの知識や技術を身に着けたいのでしたら、パソコンにマイコンボードを接続し、マイコンボード上のプログラムコードを作成すると良いかもしれません。「トランジスタ技術」という雑誌があるのですが、マイコンボードの開発やプログラミングなど扱っています。 ※ しかし、一般的なパソコンアプリを開発するだけなら、実は必要ない知識です。理解してなくても、開発環境のライブラリの仕様を理解すれば、アプリ開発はできてしまうからです。 質問主さんが、パソコンに接続するいずれかのデバイスの設計製造を目指すなら、必須というか、電子回路設計の学習の間に「自然と理解している」内容です。 以上、参考にならなかったらごめんなさい。

okwaveokw
質問者

お礼

ありがとうございます

回答No.8

少々お待ちをなぜか16進数について、コメントを書いたら、 運営チェック判断になってて、この件、別に回答してるんですよね(汗;) 変なことは書いてないので、しばらくすれば見れると思います。 #4がないのは、そのため。。

okwaveokw
質問者

お礼

わかりました

  • t_ohta
  • ベストアンサー率38% (5027/13124)
回答No.7

>>ので、CPUが読み込む1と0は必ずしもマシン語とは言えません。 >これはどういう意味でしょうか?詳しく知りたいです 例えばJPEGの画像を画面に表示するとします。 その場合、画像データは0と1の羅列であるバイナリーデータで、ここにはCPUに対して処理を命令する情報は含まれていません。 CPUは記憶装置から画像データを読み出し、それをGPU(ビデオメモリ)に対して送るだけの処理をします。 記憶装置から読み出してGPUに渡すと言う命令は画像データとは別のプログラムに書かれており、画像データに含まれません。 なので、CPUはプログラムとデータの両方を別々に読み込んで処理するので、CPUが読み込む0と1が全てマシン語とは限らないと言う事になります。 特に今どきのパソコン向けCPUは1つの命令で複雑な処理ができるようになっているので、CPUに読み込まれた電気信号が全てCPUを動かす命令に直結しているとは言えません。

okwaveokw
質問者

お礼

ありがとうございます

  • t_ohta
  • ベストアンサー率38% (5027/13124)
回答No.5

CPUが読み込むのは電気のOn/Offです。 電気のOn/Offを人間が勝手に1と0と読んでいるだけです。 電気のOn/Offはコンピュータの世界ではビットと呼んでおり、1ビットは1桁分の電気のOn/Offとなり、1または0の二値1桁と言う事になります。 マシン語は、ビットを何桁かまとめて意味を持たせたモノを1単位として扱い、32ビットのCPUなら32ビットを1単位とし、64ビットのCPUなら64ビットを1単位としています。 1と0の羅列が32桁とか64桁並んでいると人間には読みにくいので、4桁毎に読みやすくまとめる事にしたのが 16進数 と言うモノです。 16進数は4ビット分のデータを 0 ~ F の16文字で表す事になっており、32ビットなら8桁のの16進数で表記できるので桁数がグッと少なくなり人間にとって可読性が高まります。 なお、2進数や16進数で表現されている文字列は必ずしもマシン語とは限らず単なるデータである場合もありますので、CPUが読み込む1と0は必ずしもマシン語とは言えません。

okwaveokw
質問者

お礼

ありがとうございます >なお、2進数や16進数で表現されている文字列は必ずしもマシン語とは限らず単なるデータである場合もあります >ので、CPUが読み込む1と0は必ずしもマシン語とは言えません。 これはどういう意味でしょうか?詳しく知りたいです

回答No.4

>数字と英語の組み合わせになっていたり もしかして・・・・・ 「英語」ってアルファベットの事言ってます??? 0123456789ABCDEFは、「英語」ではなく「数字」なんですよ。 0~Fまでが、16個あるから16進数。 0~1までが、2個しかないから2進数。 で、16進数の1桁は、4ビットで構成されるので、 1バイトを表す8ビットにするには「2桁」最低必要 だから 00~FFまでを、16進数1バイトの数値として、 表現してるだけでこれ自体は英語ではなく、 8ビットの数字となります。

okwaveokw
質問者

お礼

ありがとうございます

  • panja2021
  • ベストアンサー率12% (5/40)
回答No.3

アセンブリはプログラミング言語なので、それをCPUが理解できる0と1にコンパイルします。

okwaveokw
質問者

お礼

CPUが理解できる0と1 これは機械語ですか? あと、この画像のECやFFなどは?

  • takncom
  • ベストアンサー率16% (15/91)
回答No.2

CPUには、線がいっぱいついてます。 電気が流れる線ですね。 流れる電気は2種類に分けられます。 電圧が高いか低いかです。 高いのを1、低いのを0と判断して処理されます。 16ビットコンピュータとか32ビットとか64ビットたか聞いた事があると思います。 これはCPUについてる線の数ですね。 データ用の線の数です。 16ビットなら16本で、あるタイミングの線の状態で 0と1を判断して16ビットの信号と捉えるわけです。 あるタイミングは何メガヘルスとかいうやつです。 で、この16ビットがCPUに与える命令になる訳です。 つまり機械語ですね。 分かりますでしょうか?

okwaveokw
質問者

お礼

この画像の55やECというのはどれにあたりますか?

回答No.1

>数字と英語の組み合わせになっていたり これは、人間が読むときの文字です。 たとえば、 一番上55は、 0101 0101ですよね?4x1+1x1=5ですから。 ですので、 8ビットで 7=0V 6=5V 5=0V 4=5V 3=0V 2=5V 1=0V 0=5V と、与えた時それが、人間のみている”55”という「16進数」 に見えるという具合です。そして、一つ一つは ON/OFFしかない2値であるという事。 >CPUが読み込むのは0と1の2進数ですよね? なので、回答は「その通り」 という事です。 ついでなので、その後の8B ECも書いておきます。 1000 1011 1110 1100ですね。 この「1」を5V(TTLとして)与えた物が コンピューターの0と1です。

okwaveokw
質問者

お礼

ありがとうございます つまり、機械語というのは 0101010等のCPUが読み込む時の形と 8BFF等 CPUは読み込めないけれども、人間にわかりやすくするために16進数表記したもの の2種類のことを指すんですね?

関連するQ&A

  • CPUがプログラミングの2進数機械語を読み込む事の

    CPUがプログラミングの2進数機械語を読み込む事の認識について間違っていたら訂正お願いします CPUは電圧0Vを0 ?Vを1と認識しますよね?それを例えば 電圧0VをN(ノー) 電圧?VをY(イエス)と置き換えてもいいんですかね? 10進数の0はN 10進数の1はY 10進数の10はYNYN 10進数の11はYNYY のような認識でもいいんでしょうか?

  • C言語をCPUに読み込ませるためには、 C言語か

    C言語をCPUに読み込ませるためには、 C言語からアセンブリ言語にコンパイルして、 アセンブリ言語からアセンブルして機械語2進数にしてCPUに読み込ませるという 2段階をしないといけないんですか? 下記の画像のように説明している動画がありました

  • CPUのクロック数について

    CPUのクロック数で 2.80CGHz のように数字と単位の間にアルファベット(主に A,B,C )が表記されていますがその意味を教えてください。

  • HandBrakeでCPUのコア数を指定

    HandBrakeで動画を変換する際、いつもCPUの使用率が100%近くになります。 そこで使用するCPUのコア数を指定したいのですが、http://www.maruko2.com/mw/HandBrake こちらのサイトに、-cpu=数字 で指定できると書いてあるのですが、このコマンドをどこに書き込めばいいかわかりません。 古いバージョンだとオプションからコア数を設定できるようなのですが、現在DLできるバージョンでは設定ができません。優先度レベルというのはいじれるのですが、これは意味ありませんでした。 上記のコマンドをどこに書き込めばいいか教えていただきたいです。また、他のやり方がある場合はそちらも教えていただけたら幸いです。

  • CPUについて

    パソコンのCPUについてなんですがCorei3や5、7など色々あると思うんですが その後の数字や英語はどうゆう意味なのでしょうか?性能の違いとかですか? 例えばCorei7→3610QMこの数字の部分です。7の中でも数字や英語の部分によって 高性能とかそうゆう事なのでしょうか?

  • CPUの数

    こんばんは。 システム導入を中心とした会社に居ります。 今行っている案件で初めてDELLサーバを触りました。 調べるとなんと12個もCPUがあります。 今導入するシステムはマルチコアに対応していません。 なので出来るだけ少なくしたくBIOSの設定を見ていたらNumber of Core per processer と言う項目をALLからSingleに変更しました。 タスクマネージャーを開いて確認すると2つに減っていました。 CPUはIntel Xeon Processor X5670 と言うものです。 6コアになるかと思ったんですが2になりました。 と言う事はこのCPUは実際の数は2つと言う事でしょうか?他のサイトなどを見ると6コアをうたっていると認識していたんですが。。 宜しくお願いします。

  • cpu 機械語

    cpu 機械語 私は工学部の出身ではないのですが、CPUは機械語を理解してコンピュータを動かすと聞いています。cpuはなぜ機械語を理解できるのでしょうか? 人間の脳とはちがうものだとは思うのですが・・・?CPUは人間が作り出したものであるなら、人間が分かりやすいC言語などを直接理解できるように開発すればいいのではないでしょうか? 根本的な質問かと思います。長くなってもかまいませんのでご意見お聞かせ下さい。 お願いします。

  • CPUについて

    CPUについてわからないことがあります。 CPUの入れ替えを考え、下記サイトに行きました。 http://www.kakaku.com/sku/pricemenu/cpu.htm するとわけのわからない言葉がいくつか出てきたので教えて頂きたいです。 人気アイテムランキングに Athlon 64 X2 4400+ Socket939 BOX Athlon 64 3500+ Socket939 BOX Pentium D 840 BOX とありますが、athlon、pentiumはメーカー名、socketは差込口?、boxはcpuクーラーとセットで売っているということまでは調べてわかったのですが、その他の単語がよくわかりません。 また、cpuクーラーで画像検索してみたところ、サイズがかなり大きかったのでデスクトップ用なのかなと思いました。 特にわからない所はathlonの後の数字、x2 4400、3500+、840等の数字とsocketの後の数字です。 よろしくお願いします。

  • 最近のCPUのクロック数が高くないのはなぜですか?

    こんにちは。 20年近く前から2-3年に一度はパソコンを買い換えたりサブを足したりしてきたものです。 デスクトップをメインにした事もありますし、ノートの時もありますし、windows中心ですがMacを使った事もあります。 その中で最初のうちはCPUのクロック数がどんどん高くなって、割と数字の高さを見ていると大体性能がわかった感じでした。その後デュアルコアとかクアッドコア等が出てきてそうとも限らなくはなりましたけど、大体数字とコア数を見て想像がついた感じで、その数字がどんどん伸びていっていたのを記憶しています。 ところが、最近はクロック数そのものがそんなに高くない製品が多く、どうしてなのか気になっています。corei3,i5,i7などの能力の違いなどは何となくわかりますが、クロック数だけで言えば特にノートは数年前に2Ghzくらいに達してから殆んど伸びていないような気がします。 デスクトップはそれなりにノートと比べると伸びているようですが、しかし言っても3Ghz を超えたあたりで止まっている様な印象です。iMacの最高機種でも3.5Ghz程度ですよね。 私が以前に買ったデスクトップは2008年の始めで、その時では性能が高い方でしたがそれでクアッドコアの2.8Ghzでしたのでそれから7年で1Ghz程度しか伸びていない(?)のが何となく不思議なのです。 これは技術が上がっていない(これ以上上がるのが難しい?)のか、これ以上あがる事に意味がないと思われていて注力されていないのか、又はクロック数では測れない部分の技術が高まっていて、クロック数の数字だけで比較する事の意味が殆んどなくなっているのか・・・などを考えていますが実際のところどうなのでしょう? 現在の私のメインパソコンは2012年前半に買ったWindowsノートでCPUはcore i5の2450(2.5Ghz)なのですが、そろそろ新しいパソコンを・・・等と思い調べても大体同じくらいのCPUなので「あれ?」と思っています。今も3年前もcore i5の2.5Ghzはcore i5の2.5Ghzで変わりませんよね? 宜しくお願い致します。

  • VMware vSphere Hypervisorの有効なCPU数

    VMware vSphere Hypervisorの有効なCPU数 いつもお世話になります。 表題の件についてお聞きしたく思います。 VMware vSphere HypervisorでゲストOSを5つ立てようと考えています。 導入するマシンの選定にあたり、CPUを1つにするか2つにするか悩んでいます。 ネットで情報を集めたところ、そもそもCPUがいくつあっても 1つ分しか有効でないといったような情報もあり、何が正しいのか掴みかねています。 【質問1】 クアッドコアのCPU×2でVMware vSphere Hypervisorを構成することは可能でしょうか? 【質問2】このような構成にできるのでしょうか? ゲストOS1⇒コア1つ ゲストOS2⇒コア1つ ゲストOS3⇒コア2つ ゲストOS4⇒コア2つ ゲストOS5⇒コア2つ 以上、よろしくお願い致します。

専門家に質問してみよう