【Salesforce】Apexでビット演算を行う
SalesforceのApexでは、直接BYTEを触ることができません。
そのため、Apexコードにはビット演算というものがないと思い込んでいました。
しかし、別件で調べごとをしていたときにビット演算をしているコードを見たので調べてみました。
たしかに、ビットシフト演算子や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.