2つの定数を使用するコードがあり、それぞれが配列のサイズをさまざまな方法で記述しています。
const ArraySize = 1024;
ArrayBits = 10; //2^10 = 1024 bits
これらの一方を他方の観点から表現するにはどうすればよいですか?コンパイラは、定数でLog2またはLdExpを使用することを許可しません。
Delphiのどのバージョンでも答えはOKです。
2つの定数を使用するコードがあり、それぞれが配列のサイズをさまざまな方法で記述しています。
const ArraySize = 1024;
ArrayBits = 10; //2^10 = 1024 bits
これらの一方を他方の観点から表現するにはどうすればよいですか?コンパイラは、定数でLog2またはLdExpを使用することを許可しません。
Delphiのどのバージョンでも答えはOKです。
さて、あなたはこれを行うことができます:
const
ArrayBits = 10;
ArraySize = 1 shl ArrayBits;
しかし、私はおそらくそれを敬遠するでしょう。それは私には少し曖昧すぎると感じます。私の意見では、算術演算を実行するときは算術演算子を使用する必要があります。
私はおそらくあなたのコードをそのままにして、2つの定数が適切に関連しているというアサーションをランタイムコードに追加します。コメント付きで文書化します。
const
ArrayBits = 10;
ArraySize = 1 shl ArrayBits;
shlbの値はa*2 ^ bに等しいため、1shlArrayBitsは2^ArrayBitsに等しくなります。