Javaではビット操作を行うのにいったん文字列に変換してから整数に戻す話 公開日:2021年9月5日 プログラミング技術情報 以前、いっしょに仕事をしていた技術者から聞いて驚いたことがあります。Javaでは、ビット操作を行うときにはいったん文字列を介して行うというのです。私はJava界隈の事情には明るくないのですが、本当にそうなんでしょうか? […] 続きを読む
10.3 ○月のN回目のW曜日は何日? 公開日:2021年9月5日 C++関数・テンプレート集プログラミング技術情報 次のメタ関数は、ある月のN回目のD曜日の日付を求めます。D1には、その月の1日の曜日を指定してください。 [crayon-6740539dbf86c805424596/] せっかくですのでconstexprを使った関数版 […] 続きを読む
10.2 日付が有効か否かの判定(グレゴリオ暦/ユリウス暦) 公開日:2021年9月4日 C++関数・テンプレート集プログラミング技術情報 指定した日付が有効かどうかを判定する関数テンプレートです。元ネタとは異なり、std::tm構造体のtm_monに合わせて、月は0~11で指定するようにしています。また、閏年用のテーブルも持たせることで、コードを単純化しま […] 続きを読む
10.1 閏年の高速判定 (グレゴリオ暦/ユリウス暦) 公開日:2021年9月2日 C++関数・テンプレート集プログラミング技術情報 元ネタでは、負の表現に1の補数を使う処理系に配慮した上で、負の年にも対応しようとしていますが、一応、高速判定が売りですので、ここでは無駄はバッサリ切り捨てて、1年~のみ対応としました。また、ユリウス暦とグレゴリオ暦を動的 […] 続きを読む
10. 日付・グレゴリオ暦計算テンプレート 更新日:2021年9月10日 公開日:2021年9月1日 C++関数・テンプレート集プログラミング技術情報 元ネタ 10.1 閏年の高速判定 (グレゴリオ暦/ユリウス暦) 10.2 日付が有効か否かの判定 (グレゴリオ暦/ユリウス暦) 10.3 ○月のN回目のW曜日は何日? 10.4 ○月D日(W曜)は、その月の何回目のW曜日 […] 続きを読む
9.3 エンディアン名を取得する関数テンプレート 公開日:2021年9月1日 C++関数・テンプレート集プログラミング技術情報 元ネタではリトルエンディアンとビッグエンディアンだけでなく、あらゆるバイトオーダーに対応しているようです。ただ、そこまでやっても実用価値はほぼないので、当サイトではリトルエンディアンとビッグエンディアンだけに対応すること […] 続きを読む
9.2 エンディアンを変換(big⇔little)する関数テンプレート 公開日:2021年8月31日 C++関数・テンプレート集プログラミング技術情報 今回のテーマは元ネタがよくわからない状態になってしまっています。それはそれとして、当サイトでは独自路線で進むことにします。元ネタにもあるように、バイト逆順にするだけなら簡単なことですので。 [crayon-6740539 […] 続きを読む
9.1 実行時にエンディアンを判定する関数 公開日:2021年8月30日 C++関数・テンプレート集プログラミング技術情報 今回はテンプレートではなく、単純な判別関数です。これを無理矢理テンプレートにする必然性はまったくありません。CHAR_BITがいくつであっても正しく動作するはずです。 [crayon-6740539dbfccc63434 […] 続きを読む
9. エンディアンに関するテンプレート 更新日:2021年9月1日 公開日:2021年8月30日 C++関数・テンプレート集プログラミング技術情報 元ネタ 9.1 実行時にエンディアンを判定する関数 9.2 エンディアンを変換(big⇔little)する関数テンプレート 9.3 エンディアン名を取得する関数テンプレート ↑ C++関数・テンプレート集 続きを読む
8.3 改行コード(CR, CRLF, LF)が混在するテキストファイルを読む。 公開日:2021年8月30日 C++関数・テンプレート集プログラミング技術情報 タイトルでは「テキストファイルを読む」とありますが、ファイルに限定する必要はないので、まずは反復子を使って汎用的に実装したあと、ファイルを扱うための関数を多重定義していくことにします。 ところで、最近は改行文字にCRを使 […] 続きを読む