- ベストアンサー
このような計算はできるでしょうか?
現在 「2バイトの数値」から「ビットが1である数」を求める 計算を行おうと思っています。 例えば、2バイトの数値が「222」の場合 →ビットに直すと「11011110」となり →ビットが1である数は「6」となります。 この計算をVBで行いたいのですが、 効率的に行える方法はないでしょうか? AND演算を行い1ビットずつカウントすると いう方法を考えたのすが、判定の時IF文がはいってしまうため 処理速度が遅くなり、困っております。 どなたか、お気づきの方はご教授ください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- ビット演算子について
あるプログラムの中で下記のようなif文の記述を見かけました。 どういう計算をしてif文の判定を行っているのでしょうか。 (1)256を2進数に変換して → 100000000 (2)0x00000004を2進数に変換して → 100 (3)100000000 & 100 のビットAND演算を行う そもそも(3)で100000000 と 100 では桁数が違うけどどうやって両者でビット演算するので しょうか。100を 000000100というように0を補完して計算すればよいのでしょうか。 その場合、100000000 & 000000100 → 000000000(2進数) → 0(10進数) となりif文の中には入らないことになると思います。 if(256 & 0x00000004 != 0)
- 締切済み
- Java
- 2進数データのビット演算
vb.netにて 0と1からなる2進数で記録した2つの値をビット演算したいと思っております。 Convert.ToInt32("1111101000", 2) などを使って、一度数値に変換して演算すれば、計算可能なことはわかったのですが、計算に利用したいデータが2進数で1000桁ほどあります。桁数が多い場合、Convert.ToInt32ではエラーが出て実行できません。 無数に長い2進数のデータをビット演算するにはどうすればよろしいでしょうか。 ご存知の方、ご教授よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- 2進数の計算について
2進数の計算について分からない問題があるのでお願いします。 (1) 2進5ビットの数値で,01001をバイアス表示とみるとき,10進数ではいくつか (2) 10進数の4を2進5ビットで表す.バイアス表示を用いると,どのように表されるか. できるだけ詳しい回答くれるとありがたいです。
- ベストアンサー
- その他([技術者向] コンピューター)
- 3進展開による有限体上での累乗計算の方法
僕はペアリング暗号システムを作るために現在有限体上(標数3^97)の楕円曲線の計算プログラムを作成しています。その過程ででてくる数字で、a^((3^97+1)/4)という数字が出てきます。この指数を2進展開してdouble and add法を使って計算していたのですが、この方法だと少し計算速度が遅いのです。 そこで(3^97+1)/4という数字を3進数に直して演算を行えば高速化ができると思いました(標数が3の倍数になるから)が、その計算方法がわかりません。 double and add法のような形での計算方法が知りたいです。知っている方がいたら、是非教えてください。
- 締切済み
- その他(プログラミング・開発)
- 桁区切り数値の計算
PHP+MYSQLで 演算子を使って計算をしたいのですが、データーベースから 数値を取り出したときに3桁以上の数値が計算できません。 <?php if($products_teika > 0.0000) { $pacent = round( 100-($products_price / $products_teika) * 100, 0); }else{ $pacent = "-"; } ?> <?php echo $pacent; ?>%OFF! という計算をさせ、割引率を表示させたいのですが 3桁以上になるとうまく計算できません。 このような場合、桁区切りの数値を計算させる方法が あるのでしょうか? ご存知の方ご教授お願いいたします。
- ベストアンサー
- PHP
- エクセル2002の計算式についてですが、
エクセル2002の計算式についてですが、 例えば下記のような条件で計算式を作りたいのですが、 D5:D17まで空欄だった場合、D18も空欄 D5:D17まで1箇所以上のセルに数値の入力があった場合、 D18に、D5:D17の加算数値を求めたいのですが、 どのような計算式にすればよろしいでしょうか? IF、AND関数を組み合わせれば下記のように一応は出来ますが、 =IF(AND(D5="",D6="",D7="",D8="",D9="",D10="",D11="",D12="",D13="",D14="",D15="",D16="",D17=""),"",SUM(D5:D17)) 仮に、D5:D3000のように範囲が広い場合、 IF、AND関数ではかなりしんどいですが何か良い方法がありますでしょうか?
- ベストアンサー
- オフィス系ソフト
- 多倍長演算における実行時間と計算量の差
数学の論文において数値実験が必要だったため, 多倍長演算をC++で実行したところ,計算量とのギャップが生じました. その原因をコンピュータに詳しい方にアドバイスを頂きたいと思って質問させていただきました. 具体的には,n,m を同ビット として 以下の二つの演算を考えます. 演算(1) n * m 演算(2) n^2 % m (n^2は先に計算しておき,% (mod)の演算のみ) -------------------------------------------------- ■計算量評価 大雑把に(1)と(2)の計算量を比較すると (1) lg n * lg m = (lg n)^2 (2) (2*lg n - lg m) * lg m = (lg n)^2 となるので,(1) と (2)はほぼ同じ計算量となります. -------------------------------------------------- しかしながら,実際に計算をしてみると, n,m が 1000bit ほどまでは,ほぼ同じ計算時間なのですが, 2000bit, 4000bit ,..., と数を大きくしていくと,大きくしただけ (2) の速度が遅くなります. 具体的な実験結果は画像で添付いたします. 画像 (http://puu.sh/6iBQf.png) (1) と (2)の実行時間のギャップは何処から生じたものなのか,何かわかるかたがいらっしゃいましたら教えていただけたら嬉しいです. よろしくお願い致します. 予想: コンピュータの知識があまりないですが,自分なりの予想では,(2)のn^2という数が大きすぎるため,演算においてメモリ間とのデータのやり取りで何かのオーバーヘッドが生じているのではないかと予想していますが,確証がもてません.
- ベストアンサー
- 情報工学
- 計算結果のみ 0 を表示する方法を教えて下さい。
計算結果のみ 0 を表示する方法を教えて下さい。 D4に数値が入った場合、D5に13万円未満は0%・13万円以上は1%・14万円以上は2%・尚且下3桁は切り捨てというように次の計算式を設定しています。 ROUNDDOWN(IF(D4<130000,D4*0%,IF(AND(D4>=130000,D4<140000),D4*1%,IF(AND(D4>=140000,D4<180000),D4*2%,))),-3) ゼロ値は表示しないとしていますが、D4に数値が入りD5の計算結果が0であった場合は0を表示したいのです。 D4に数値が入るまではD5は非表示になりD5に数値が入ると0表示になるように設定するにはどうすればいいのでしょうか?
- 締切済み
- その他([技術者向] コンピューター)
- フォートランプログラムの計算負荷について
今、フォートランで数値計算をしています。 プログラムを書き換えて走らせたところ、計算速度が非常に遅くなりました。 考えられるのは、IF文を多く使うようにしたこと、サブルーチンの呼び出し回数をふやしたなどが考えられるのですが。IF文はそれほど、計算負荷の大きいものなのでしょうか。 お願いいたします。
- 締切済み
- その他(プログラミング・開発)
- if(wp & MK_ LBUTTON)
case WM_MOUSEMOVE: if(wp & MK_ LBUTTON) { x = LOWORD(lp); y = HIWORD(lp); } if(wp & MK_ LBUTTON) の wp & MK_ LBUTTON ですが何をやってるんでしょうか? WPARAMと、MK_ LBUTTONの、 ビット演算、AND演算してると思うのですが 具体的どんな」ビット計算が行われているんでしょうか? 教えてください。
- ベストアンサー
- C・C++・C#
お礼
お礼が遅れて申し訳ございません。 皆様にまとめてお礼を申し上げさせていただきます。 たくさんの方から回答いただき感激です。 大変参考になりました。 ありがとうございます。