問題タブ [integer-arithmetic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C - 8 ビット マイクロプロセッサでの 32 ビット & 16 ビット演算
32kb の RAM と最大 2.5mbytes のデータ/コード ROM を備えた古い 8 ビット マイクロプロセッサ (Hu6280 - 古い NEC PC エンジン コンソールの WDC 65C02 派生品) 用のコードを書いています。この言語は Small-C のバリアントですが、次の 2 つの基本的なタイプに限定されています。
struct
サポートも long int サポートもありません。
私は、主にゲームの ROM イメージをロードするために開発された SD カード リーダーとインターフェイスする FAT ファイルシステム ライブラリを作成していますが、進取の気性に富んだハッカーが、コンソール側から未加工のセクターを読み取ることができるアセンブリを作成しました。彼は、32 ビット セクター アドレスの 4 つの 8 ビット値を 4 つの連続するメモリ アドレス (char address[4];) に詰め込むことによってこれを実現します。私の C コードは、彼の作業を活用して、SD カードから dos MBR ブート セクタとパーティション タイプ情報を (今のところ) 読み取ります。MBR チェックサムの検証と FAT パーティションの検出が機能しています。
ただし、FAT32 (SD カード デバイスの FPGA がサポートするもの) をサポートする必要があるため、ディレクトリ エントリとファイルを検索するためのセクターとクラスター演算のほとんどは、32 ビット LBA セクター値に基づいています。
上記の制限に基づいて、8/16/32 ビット整数を加算/減算/乗算するために必要な簡単なメカニズムは何ですか? これを処理する既成の C ルーチンを持っている人はいますか? たぶん、次のようなものです:
編集:上記の返信に基づいて、これは私がこれまでに思いついたものです-これはまだテストされておらず、乗算と減算についても同様のことを行う必要があります:
編集 2: これは、エミュレートされた 32 ビット + 32 ビット整数の追加コードの更新およびテスト済みバージョンです。これまでに試したすべての値で機能します。32 ビット符号なし整数より大きい値のオーバーフローは処理されません (私の目的では必要ありません)。
SOをもう少し検索した後、一部のPICコントローラーで32ビット演算への参照もいくつか見つけました。
http://web.media.mit.edu/~stefanm/yano/picc_Math32.html
加算/減算コードにはインラインのPICアセンブリがいくつかありますが、シフト、比較、インクリメント/デクリメントなどをすでに実装している、プラットフォームに依存しない便利なcharベースのC関数がいくつかあり、非常に便利です。次に減算と乗算を調べます-情報をありがとう; 私は物事を見て、必要以上に難しいと思っていたと思います。
performance - 32 ビット整数を使用して 32 ビット マシンで動作する高性能コードを Dart で記述することは可能ですか?
Dart 言語で 32 ビット整数を使用して 32 ビット マシンで作業するときのパフォーマンスの大きな違いに、私は少しがっかりしました。
これは、Dart VM がまだ整数演算用に最適化されていないことを意味しますか?
これが私のかなり簡単なテストです。
出力:
これは、real
場合によってはパフォーマンスが 130 倍遅くなる可能性があることを意味します。
c - 大整数演算
Cで非常に大きな整数に対して算術演算を実行するために使用されるさまざまな手法を知りたいです。私が知っているのは、文字列を使用して数値を保持し、加算、減算などの演算を定義することです。ライブラリの使用には興味がありません。この質問は純粋に知識に関するものです。使用された他のそのような方法/技術を提案してください。
c - 算術オーバーフローはモジュロ演算と同等ですか?
Cでモジュロ256演算を行う必要があります。簡単にできますか
それ以外の
java - 初級 Java プログラマーの算数エラー
私は最近 Java プログラミングに乗り出し、自分自身をプログラミング初心者だと考えています。ソース コードの演算に問題があるようです。ネストされたすべての if-else ステートメントを検証しましたが、それらはすべて最後の else ステートメントの演算まで機能します。上記の if-else ステートメントと同じように計算を設定しましたが、正しく計算されません。
else ステートメントは、金額から 40 を引いてから 1 パーセントの料金を適用することを想定しています。私はelseステートメントを試しましたがfee = ((checkAmount - 40) * .01)
、fee = ((checkAmount * .01) - 40)
これは本の練習問題です
conditional - ビット演算子または算術演算子のみを使用して、用語 ( a < b ? 0 : 1 ) を表現するにはどうすればよいですか?
変数 a と b が 32 ビット整数であると仮定すると、3 項演算子も比較演算子も使用せずに、a < b の場合は 0 を返し、a >= b の場合は 1 を返す方法はありますか?