複雑な例とは? わかりやすく解説

複雑な例

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/26 23:58 UTC 版)

名前修飾」の記事における「複雑な例」の解説

もっと複雑な例を挙げる実際に用いられている名前修飾見てみようGNU GCC 3.x次のクラス例をどのように修飾するだろうか修飾されシンボルそれぞれの識別子の下に表示されている。 namespace wikipedia { class article { public: std::string format (void); ''/* = _ZN9wikipedia7article6formatEv */'' bool print_to (std::ostream&); ''/* = _ZN9wikipedia7article8print_toERSo */'' class wikilink { public: wikilink (std::string const& name); ''/* = _ZN9wikipedia7article8wikilinkC1ERKSs */'' }; };} ここでの名前修飾スキーム比較的単純である。修飾された名前は全て _Z で始まる。下線大文字続けたものはCおよびC++では予約語であることに注意されたい。従って、ユーザ識別子とぶつかることはない。ネストされた名前は(名前空間クラス両者)、Nをつけ、次いで <長さ,id> のペアをつけて示す(「長さ」は次の識別子の長さ)。最後にEを付ける。例えば、wikipedia::article::formatは _ZN·9wikipedia·7article·6format·E となる。 関数場合は、続いて型情報付加されるformat()void 関数なので、単にvを付ける。よって、 _ZN·9wikipedia·7article·6format·E·v となる。 print_toの場合は、標準的な型として std::ostream (あるいは、もっと正確にstd::basic_ostream<char, char_traits >)が用いられ、これには特殊な別名 So がある。よって、この型に対す参照RSoとなる。名前の完成形はこうなる。 _ZN·9wikipedia·7article·8print_to·E·RSo

※この「複雑な例」の解説は、「名前修飾」の解説の一部です。
「複雑な例」を含む「名前修飾」の記事については、「名前修飾」の概要を参照ください。


複雑な例

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/04/11 07:59 UTC 版)

JavaScript」の記事における「複雑な例」の解説

以下のサンプルコードは、様々なJavaScript機能示したのである。 "use strict"; // strictモード宣言/* 2つ数値最小公倍数求める */function LCMCalculator(x, y) { // コンストラクタ関数 const checkInt = (x)=> { // 入れ子関数 if (x % 1 !== 0) { throw new TypeError(x + " is not an integer"); // 例外スロー } return x; }; // 行末セミコロン省略可能な場合があるが、省略推奨されない。 this.a = checkInt(x) this.b = checkInt(y);}// オブジェクトプロトタイプコンストラクタ関数prototype プロパティ格納するLCMCalculator.prototype = { // オブジェクトリテラル constructor: LCMCalculator, // このようにプロトタイプ上書きする場合は、 // constructorプロパティコンストラクタ関数名を再指定する gcd: function () { // 最大公約数計算するメソッド // 「ユークリッドの互除法アルゴリズム計算 let a = Math.abs(this.a), b = Math.abs(this.b); if (a < b) { // 変数の入れ替え const t = b; b = a; a = t; } while (b !== 0) { const t = b; b = a % b; a = t; } // 最大公約数の計算は一度でよいため、自分自身を計算済みの結果を返すメソッドで再定義(上書き)する。 // (これにより LCMCalculator.prototype.gcd の代わりに this.gcd が呼ばれるようになる。 // ただし、計算後にプロパティ a や b が変更されてしまうと、結果は誤りとなる。) // なお 'gcd' === "gcd", this['gcd'] === this.gcd である。 this['gcd'] = function () { return a; }; return a; }, lcm : function () { // 最小公倍数を計算するメソッド // 変数名は、オブジェクトのプロパティと衝突しない。例)lcm は this.lcm とは異なる。 // 以下では、浮動小数の精度の問題を避けるために this.a * this.b としていない。 const lcm = this.a/this.gcd()*this.b; // 最小公倍数の計算も一度でよいため、自分自身を計算済みの結果を返すメソッドで再定義(上書き)する。 this.lcm = function () { return lcm; }; return lcm; }, toString: function () { // toStringはオブジェクトを文字列に変換するときに呼ばれるメソッド。 // テンプレート文字列により文字列中に値を埋め込むことができる。 return `LCMCalculator: a = ${this.a}, b = ${this.b}`; }};// 汎用の出力関数の定義。この実装はWebブラウザ上でのみ動作する。function output(x) { document.body.appendChild(document.createTextNode(x)); document.body.appendChild(document.createElement('br'));}// 無名関数はさまざまな書き方が可能[[25, 55], [21, 56], [22, 58], [28, 56]].map(([a, b])=> new LCMCalculator(a, b)) // 配列リテラル + マッピング関数.sort((a, b)=> a.lcm() - b.lcm()) // 指定した比較関数用いたソート.forEach(obj=> { output(obj + ", gcd = " + obj.gcd() + ", lcm = " + obj.lcm());}); 上記コードウェブブラウザ上で実行すると、以下の結果表示される。 LCMCalculator: a = 28, b = 56, gcd = 28, lcm = 56LCMCalculator: a = 21, b = 56, gcd = 7, lcm = 168LCMCalculator: a = 25, b = 55, gcd = 5, lcm = 275LCMCalculator: a = 22, b = 58, gcd = 2, lcm = 638

※この「複雑な例」の解説は、「JavaScript」の解説の一部です。
「複雑な例」を含む「JavaScript」の記事については、「JavaScript」の概要を参照ください。


複雑な例

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/12/10 09:59 UTC 版)

マイクロシーケンサ」の記事における「複雑な例」の解説

IBM System/360は、1964年発売され互換性のある一連のコンピュータで、その多くはマイクロプログラミングされていた。 System/360モデル40は、複雑なマイクロシーケンスを持つマイクロプログラムマシンの良い例である。 マイクロストアは、平マイクロプログラミングスタイルで動作する4,096個の56ビット・マイクロ命令構成されている。 ストアアドレスは、12ビットのリードオンリー・アドレスレジスタ(ROAR)によって指定されるS/360アーキテクチャのほとんどのレジスタとは異なりROARビットは右のビット0から左のビット11までの番号付けられている。 +------------+ | ROAR | +------------+ 11 0 モデル40は、マイクロ命令逐次実行行わないので、マイクロシーケンサは、従来の意味では実際に分岐しない。 代わりに、各マイクロ命令は、次に実行されるマイクロ命令アドレス指定するマイクロ命令内の4つフィールド新しアドレス寄与するCA, 4 bits: 他のフィールド応じ次のアドレス一部CB, 4 bits: 次のアドレスビット1を決定するCC, 4 bits: 次のアドレスビット0を決定するCD, 2 bits: 次のアドレスどのように組み立てられるかを制御する(CBフィールド15を含む場合を除く)。 これらのフィールドには、基本的に3つの組み合わせ、またはフォーマットがある。

※この「複雑な例」の解説は、「マイクロシーケンサ」の解説の一部です。
「複雑な例」を含む「マイクロシーケンサ」の記事については、「マイクロシーケンサ」の概要を参照ください。

ウィキペディア小見出し辞書の「複雑な例」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


このページでは「ウィキペディア小見出し辞書」から複雑な例を検索した結果を表示しています。
Weblioに収録されているすべての辞書から複雑な例を検索する場合は、下記のリンクをクリックしてください。
 全ての辞書から複雑な例 を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「複雑な例」の関連用語

複雑な例のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



複雑な例のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの名前修飾 (改訂履歴)、JavaScript (改訂履歴)、マイクロシーケンサ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS