1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

曜日をbit管理する

Posted at

色々やりたいタイミングなのでopenFrameworksでbit値を使って曜日管理したいと思い、
C++全然触ったことないけど一生懸命調べた。

要件としては与えられた曜日設定に対して、本日が対象の曜日かを調べること。

日月火水木金土を0000000の7bitとして
1000001なら土日、0111110なら月〜金みたいな感じで
今日の曜日に対してフラグが立ってるかの関数を実装。

bool ofApp::CheckWeekday(unsigned short settingDay){
	bool result = false;

	bitset<7> bitsetWeeks{settingDay};

	int current = pow( 2, 6 - ofGetWeekday());
	bitset<7> bitsetCurrent{static_cast<unsigned short>(current)};

	if ((int)(bitsetWeeks & bitsetCurrent).to_ulong() > 0){
		result = true;
	}
	return result;
}

ofGetWeekdayが0=Sunday〜の対応だったので
要件を満たす形に変換したのが↓コレ


pow( 2, 6 - ofGetWeekday());
//日:64,月:32,火:16,水:8,木:4,金:2,土:1

この記事書いてる今日は火曜日なので
0010000
と変換出来る。

ここまでくればbitsetの論理積を取ってあげて
整数値に戻した値が0より大きければ対象曜日となる。。。
んだけどキャスト塗れでかっこ悪い…cppって難しいなぁ

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?