human
灰色のコードを実装し、指定されたコードの後に特定の回転方向に次のシーケンスコードを返すJava関数を書きます
gpt
```
public static int getNextGrayCode(int num, boolean direction) {
    if (direction) {
        return num ^ (num >> 1);
    } else {
        int mask = num;
        while ((mask & 1) == 0) {
            mask >>= 1;
        }
        return num ^ mask | (mask >> 1);
    }
}
```
human
このコードの仕組みを説明していただけますか？
gpt
ええと
human
理解せずにコードを書きましたか？