× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
小数の演算結果が手計算と合わない・・・TT
桁数が少なければ整数として計算してしまうのだが・・・^^; BigDecimal を使えばいいんだけど・・・ strictfp というクラス、インターフェース、メソッド修飾子がある strictfp で修飾されるとその内部すべての式が FP-strict になる FP-strict とは IEEE-754 で定められた精度である FP-strict でない場合より高い精度で演算が行われる可能性がある (x86プロセッサでは80ビットで行う) float:符号1ビット 指数8ビット 仮数23ビット double:符号1ビット 指数11ビット 仮数52ビット x86拡張精度:符号1ビット 指数15ビット 仮数64ビット PR |
排他処理には synchronized を用いればよいが・・・
volatile ってなんだろう??? スレッド処理を含むクラス群をコンパイルした時に どちらかで修飾してくれというエラーメッセージが出る時がある これはスレッドがフィールドをスレッド固有の作業領域に コピーして処理を行い・・・その後フィールドに戻すのためで タイミングによっては値が保証されないため コンパイル時に警告しているのである そのため synchronized で立ち入り禁止にしてしまうか(メソッド、ステート) volatile で修飾しスレッド間の作業領域として 共有のフィールドを使用するよう宣言するのである(フィールド修飾子) |
Java の int型 は符号付 32bit だから・・・
int i = (1 << 31) は i = -2,147,483,648 である さらに -1 ってことは・・・ 実行結果は i = 2,147,483,647 正の数になってる・・・ 16進数で考えると int i = (1 << 31) は i = 0x80000000 だし・・・ -1 は2の補数で 0xFFFFFFFF だから・・・ 和を取ると最上位ビットが桁あふれして・・・ i = 0x7FFFFFFF となるから・・・ i = 2,147,483,647 となるのか でも感覚的には・・・ int i = ~(1 << 31) のように シフト演算の後1の補数(ビット反転)にした方が・・・ でも簡単な演算の場合 シフト演算より四則演算の方が速い・・・って 聞いたこともあるから・・・ どっちがいいのだろ??? |
プログラミング知識ゼロ・・・
アルゴリズムって何・・・??? というところから始まった このプロジェクトも・・・ 開発環境をテキストエディタ+JDKから IDEであるNetBeansへ・・・ 生産物もzipよりも高圧縮に・・・ 更なる発展を目指して・・・ |
忍者ブログ [PR] |