きり丸の技術日記

技術検証したり、資格等をここに残していきます。

OldstarのHDMI 変換アダプタで表示できない場合の対応(Win11の場合)

この記事ではOldstarのHDMI変換アダプタをWin11でも表示させる方法をブログにします。同梱されているドライバはWin10までしか対応していません。

なおWin11で表示はできるものの、10月23日時点ではドライバの品質が悪く、使用に耐えられない描画遅延が発生しているので返品しました。

対象商品

対応

同梱されているドライバではなく、公式ページの最新ドライバを使用してください。まだ英語対応されていないのか、中国語のインストーラが起動します。

確認元

ドライバのGitHubのissueから確認しました。

終わりに

3画面以上のマルチディスプレイを表示したかったのでUSB HDMI変換アダプタを買いましたが、ドライバがちゃんと対応していないといけないんですね。勉強になりました。

Javaでメルセンヌ数を求める

Javaでメルセンヌ数(2の冪-1)を求める方法を記載します。

メルセンヌ数についてはWikipediaを参考にしてください。

前提

  • Java
    • 21

対応

2の冪-1が整数となる値を求めるために次の式を使用します。

private static boolean isMersenne(int value) {
  return log2(value + 1) % 1 == 0;
}
public static double log2(int value) {
  return Math.log(value) / Math.log(2);
}

解説

2の冪-1 = メルセンヌ数ですので、式変形して2の冪=メルセンヌ数+1と変形できます。2の冪数の計算については、次の式で求められます。

log2(value + 1);

public static double log2(int value) {
  return Math.log(value) / Math.log(2);
}

あとは、求めた冪数が整数であることを求めます。今回は値 % 1 == 0で整数を求めました。

private static boolean isMersenne(int value) {
  return log2(value + 1) % 1 == 0;
}

メルセンヌ素数を求める

メルセンヌ数に条件を追加するとメルセンヌ素数を求められます。素数は次のメソッドで求められます。詳しい原理については他の方のブログを参考にしてください。

public static boolean isPrime(int value) {
  if (value <= 1) {
    return false;
  }
  if (value <= 3) {
    return true;
  }
  for (int i = 2; i <= Math.sqrt(value); i++) {
    if (value % i == 0) {
      return false;
    }
  }

  return true;
}

ソースコード

終わりに

メルセンヌ数も素数も普段求めないから頭が回らないですね。解く機会があったので今回のブログにしました。

類似情報

Javaで二進対数(log2x)を求める

Javaで用意されているMathクラスだと十進対数(logx)だけしかないので二進対数(log2x)で計算する方法をメモします。

前提

  • Java
    • 21

対応

十進対数から二進対数を割るだけです。

public static double log2(int value) {
  return Math.log(value) / Math.log(2);
}

ソースコード

終わりに

普段のアプリケーションで対数を使うことがないのでメモしました。