contract C {
    int16 immutable x = -2;
    function f() public view returns (bytes32 r) {
        int16 y = x;
        assembly { r := y }
    }
}

无论int16 还是 intX。返回结果是 0x0000…000fffe 而非 0xffff…fffe