4.4.1 十六进制和二进制整数常量

使用十六进制或二进制记法定义数值时,将自动创建一个无符号整数,其表示形式的位宽刚好足以容纳指定的值。例如:

0b101        # 无符号8位
0x100        # 无符号16位
0xDEADBEEF   # 无符号32位
0x1DEADBEEF  # 无符号64位

可以通过添加后缀来指定存储类。使用 ‘s’ 表示有符号整数,使用 ‘u’ 表示无符号整数,并配合位宽(‘8’、 ‘16’、‘32’、‘64’)。使用下划线分隔符 ‘_’ 可以提高可读性。例如:

0b101s16        # 有符号16位
0b101_s16       # 有符号16位,数值与表示分离
0xDEADBEEFs32   # 有符号32位
0xDEADBEEF_u64  # 无符号64位

需要注意的是,在定义整数常量矩阵时,整个矩阵将采用其第一个元素的存储类。矩阵 [0x1; 0x100; 0x10000] 的类型将是 uint8,由于整数值的饱和语义,较大的值 将被截断。为避免此问题,可采取以下措施之一:1) 将第一个整数声明为所需位宽, 例如 [0x1u32; 0x100; 0x10000];或者 2) 在数组表达式中使用前导零填充常量, 使每个值使用相同的位数,例如 [0x00_00_01; 0x00_01_00; 0x01_00_00]

版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-4