带有十六进制整数常数和十进制整数的负整数异或会产生不同的结果吗?

我试图创建一个表“ MyTable”,并添加一个具有小整数类型的字段“ field1”。

然后,我向field1添加一个负数-12289。

然后,我执行以下SQL查询:

select field1 ^ 0xcfff from MyTable

结果为零。

但是,如果我用十进制整数常量替换十六进制整数常量,如下所示:

select field1 ^ 53247 from MyTable

其结果是-65536。

为什么?

The only clue is on https://docs.microsoft.com/en-us/sql/t-sql/data-types/int-bigint-smallint-and-tinyint-transact-sql?view=sql-server-ver15

大于2,147,483,647的整数常量将转换为十进制数据类型,而不是bigint数据类型。

但是0xcfff和53247都比2,147,483,647小得多。为什么它们会产生差异结果?