ラベル ビット演算 の投稿を表示しています。 すべての投稿を表示
ラベル ビット演算 の投稿を表示しています。 すべての投稿を表示

2023年10月2日月曜日

SQL SQLでもビット演算は計算できる

どうも。どっことです。今回はSQLでのビット演算について備忘録を記載します。

SQLでビット演算

SQLでもビット演算することができます。ビット演算は情報系の学生やエンジニアには基礎的な内容ですが、Androidだけで言えば使うことがあまり多くないかもしれません。

しかし、確かにビット演算による機能実装は行われており、例えばIntentに付与するflagの値はこのビット演算により制御されています。

これをもとに考えると、アプリやデータなどの複数の重複した状態を管理するのに向いていそうです。例えばSNSのコメントの「お気に入り」「リブート/リポスト」「いいね」などを管理するとき、booleanで管理するのが一番シンプルな実現方法ですが、最大値7の整数(000〜111)でまとめてしまう、という管理でも実現することができます。これの嬉しいことは、似たようなデータ要素を追加するとき、例えば「ミュート」を追加する場合にも、変数を追加せずに最大桁数を7→15の整数(0000〜1111)に上げることだけで十分実現できるということです。

変数を追加するというのはプログラムのデータ上だけでなくデータベースのテーブルやAPIでのやりとりにも影響してくるので、このようなOn/Offのデータをビット管理するのは拡張性を意識したときに優れていると考えられます。

積(and)

select 1 & 1; 1
select 1 & 0; 0

和(or)

select 1 | 1; 1
select 1 | 0; 1
select 0 | 0; 0

反転(not)

select ~0; -1
select ~1; 0

左シフト

select 1<<2; 4

右シフト

select 4>>1; 2

移行予定

どうも。どっことです。 タイトルの通りですが、諸事情により GitHubPage に移行予定です。 https://mkt120.github.io/ この備忘録に記載の内容を転記しつつ、今後はこちらのページを更新していく予定です。