MySQL 源代码文档中 (1UL << 22) 是什么意思



我正在更新Java中的现有库,我必须连接到MySQL 8,但源代码文档有一个我不明白的 #DEFINE。我正在专门查看 https://dev.mysql.com/doc/dev/mysql-server/latest/group__group__cs__capabilities__flags.html 的客户端功能标志。

一些功能标志显示十进制值,因此我可以将它们转换为 unix 以便更轻松地进行位掩码,但有一些标志,如CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS的值为(1UL << 22). 我不知道(1UL << 22)能够将其转换为我可以在 java 中使用的内容意味着什么。

一般来说,(1UL << 22)表示 1 在无符号长整型内向左移动 22 次。

即2^22,即 4*1024*1024。

在您的情况下,如果寄存器的位 22 为 1(位计数从 0 开始(,则在其特定的无符号长寄存器中,CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS只是一个启用的标志。

相关内容

最新更新