C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[19]: C++からVBへの変換 [1]


(過去ログ 158 を表示中)

[トピック内 26 記事 (21 - 26 表示)]  << 0 | 1 >>

■91885 / inTopicNo.21)  Re[14]: C++からVBへの変換
  
□投稿者/ 魔界の仮面弁士 (2288回)-(2019/08/08(Thu) 12:09:45)
No91882 (えん さん) に返信
> ^ をべき乗のことだと勘違いしていました

これは No91846 で説明されていましたね。


蛇足ですが、.NET では無い方の Visual Basic では、バージョン 7.0 で
 a = 123^
のような構文が追加されていたりします。
(VB.NET の a = 123& や a = 123L に相当します)


> C++だとpowがべき乗になるのですね。

C/C++ は良く分かってないんですが、
#include <cmath> で std::pow か
#include <math.h> で pow なのかな。


VB.NET での ^ 演算は、コンパイル時に Math.Pow に置き換えられていたりします。
(なので、結果は常に Double になる)

一方の Xor 演算は、整数値の入れ替え処理(Swap)に使われることもありますね。
https://ja.wikipedia.org/wiki/XOR%E4%BA%A4%E6%8F%9B%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0


> ちなみにXORって四則演算に置き換えることってできますでしょうか?

…何のために?

相手が Boolean に対しては
 A Xor B
という式は
 A And Not B Or Not A And B
に展開できますので、ビット単位に分解してやれば、
無理矢理処理できなくもないですが、メリットが全く無さそうです。

MSIL レベルだと、xor 処理は 0x61 命令一発で済むのですし。
引用返信 編集キー/
■91886 / inTopicNo.22)  Re[15]: C++からVBへの変換
□投稿者/ えん (17回)-(2019/08/08(Thu) 12:54:14)
> …何のために?

論理演算子に慣れていないので
分かりづらいというのと、
自分で勉強のために、
どういった数式と等価なのか知りたいためです。




引用返信 編集キー/
■91887 / inTopicNo.23)  Re[16]: C++からVBへの変換
□投稿者/ 774RR (722回)-(2019/08/08(Thu) 13:13:25)
四則演算に等価なものが無いからわざわざ XOR などという名称を付けているのであって
あなたにわかりづらくてもオイラたち組み込み系だと当たり前すぎて他の呼び方しないっす。

CRC 演算とか MD5 とか SHA とか扱う際には XOR は避けられないので、
いい機会だから今慣れておくと良さそう。

引用返信 編集キー/
■91892 / inTopicNo.24)  Re[17]: C++からVBへの変換
□投稿者/ えん (19回)-(2019/08/08(Thu) 15:39:44)
等価な変換ありませんでしたか
どうもありがとうございました。

解決済み
引用返信 編集キー/
■91893 / inTopicNo.25)  Re[18]: C++からVBへの変換
□投稿者/ 魔界の仮面弁士 (2289回)-(2019/08/08(Thu) 16:44:07)
No91892 (えん さん) に返信
> 等価な変換ありませんでしたか

No91848 で書かれていた URL のアルゴリズムはさっぱり分かりませんが、
No91862 に書かれていた部分の

  n = (4の冪乗な整数);
  i = 0;
  for (j = 1; j < n - 1; j++) {
    for (k = n >> 1; k > (i ^= k); k >>= 1);

    DoAnything(i, j);
  }

の処理について、DoAnything 部さえ同じ結果になれば良いのなら、
こういう風に書くこともできますね。

  Dim bitLength As Integer = 2 * CInt(Int(Math.Log(n, 4)))
  For j As Integer = 1 To n - 2
    Dim bin As String = Convert.ToString(j, 2).PadLeft(bitLength, "0"c)
    Dim i As Integer = Convert.ToInt32(StrReverse(bin), 2)

    DoAnything(i, j)
  Next
引用返信 編集キー/
■91894 / inTopicNo.26)  Re[19]: C++からVBへの変換
□投稿者/ えん (20回)-(2019/08/08(Thu) 16:54:59)
なるほど、文字列に変換すれば等価な変換はありますか
ありがとうございます。

解決済み
引用返信 編集キー/

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -