以下のコードのように、リアルタイムクロックに「年」、「月」、「日」などを保持する変数があります。
C
1typedef union 2{ 3 struct 4 { 5 unsigned char wday; // BCD codification for day of the week, 00-06 6 unsigned char mday; // BCD codification for day of the month, 01-31 7 unsigned char mon; // BCD codification for month, 01-12 8 unsigned char year; // BCD codification for years, 00-99 9 }; // field access 10 unsigned char b[4]; // byte access 11 unsigned short w[2]; // 16 bits access 12 unsigned long l; // 32 bits access 13}rtccDate;
「年」を保持する変数yearがBCD表現で00~99とあるのですが、なぜBCD表現である必要があるのかわかりません。
変数yearを10進数の変数のように扱い、値を代入したら何か問題があるのでしょうか?
たとえば、NTPサーバとの同期で現在の年が2016だとわかったときに、
C
1dt.year = 0x16;
とするのが正しいと思うのですが、これを
C
1dt.year = 16;
としたら何か問題があるのでしょうか?
また、変数yearを10進数の変数のように扱えば、0~255までの256年間を表現できると考えたのですが、このような使い方をするのはまずいでしょうか?
![guest](/img/icon/icnUserSample.jpg)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/07 08:44
2016/01/07 10:44
2016/01/07 23:41