【Salesforce】Apexでビット演算を行う

【Salesforce】Apexでビット演算を行う

SalesforceのApexでは、直接BYTEを触ることができません。

そのため、Apexコードにはビット演算というものがないと思い込んでいました。

しかし、別件で調べごとをしていたときにビット演算をしているコードを見たので調べてみました。

https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/langCon_apex_expressions_operators_understanding.htm

たしかに、ビットシフト演算子やAND演算子があるようです。

Integerで試してみました。

Integer i = 15;
system.debug('【i】' + i);              // 15
system.debug('【i >> 1】' + (i >> 1));  // 7
system.debug('【i >> 2】' + (i >> 2));  // 3
system.debug('【i << 1】' + (i << 1));  // 30
system.debug('【i << 2】' + (i << 2));  // 60

16進数のFを1ビットずつシフトしています。

ちゃんとシフト演算がされていますね。

もちろん論理演算もできます。

Integer i = 15;
system.debug('【i】' + i);            // 15
system.debug('【i & 1】' + (i & 1));  // 1
system.debug('【i & 2】' + (i & 2));  // 2
system.debug('【i & 4】' + (i & 4));  // 4
system.debug('【i & 8】' + (i & 8));  // 8

わ、わかりづらいですね。

別の値で試します。

Integer i = 11;
system.debug('【i】' + i);            // 11
system.debug('【i & 1】' + (i & 1));  // 1
system.debug('【i & 2】' + (i & 2));  // 2
system.debug('【i & 3】' + (i & 3));  // 3
system.debug('【i & 4】' + (i & 4));  // 0
system.debug('【i & 5】' + (i & 5));  // 1
system.debug('【i & 6】' + (i & 6));  // 2
system.debug('【i & 7】' + (i & 7));  // 3
system.debug('【i & 8】' + (i & 8));  // 8

Salesforceではあまり使う機会がないかもしれませんが、いざというときのために覚えておかなければいけませんね。

とても久しぶりにビット演算を使いました。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です