なんだかGoodVibes

日々の勉強メモです。

C#・Node・VBAでビット演算

以前、C#でのビット演算を紹介したのですが
NodeやVBAでもやってみましたので
比較してみました。
C#でのビット演算は以下の記事でもう少し詳しく紹介しています。

nandakagoodvibes.hatenablog.com


論理積

二つの入力の両方が1のときのみ出力が1となり
いずれか一方あるいは両方が0の場合は0となる。

C#

var result = num1 & num2

Node

var result = num1 & num2;

VBA

Dim result As Integer
result = num1 And num2


論理和

二つの入力の両方が0のときのみ出力が0となり
いずれか一方あるいは両方が1の場合は1となる。

C#

var result = num1 | num2

Node

var result = num1 | num2;

VBA

Dim result As Integer
result = num1 Or num2


排他的論理和

二つの入力のいずれか一方が1のときのみ出力が1となり
両方が0もしくは両方が1の場合は0となる。

C#

var result = num1 ^ num2

Node

var result = num1 ^ num2;

VBA

Dim result As Integer
result = num1 Xor num2


数値を2進数で取得する

C#

Convert.ToString(num, toBase:2)

Node

num.toString(2)

VBA

Private Function ConvertBinary(ByVal num As Integer) As Long

    Dim baseNum As Long: baseNum = 1
    Dim result As Long: result = 0

    Do
        result = result + (num Mod 2) * baseNum
        num = num \ 2
        baseNum = baseNum * 10

        If num <= 0 Then
            Exit Do
        End If
    Loop

    ConvertBinary = result

End Function


まとめ

C#とNodeは同じようにして値を取得できました。
VBAだけはちょっと違いましたね。
以上。