假设有一个大小为1个字节的内存块,有符号位的数值-1。 -1原码 -1补码 无论-1无论右移多少位都是-1。 解决方案: S8 Demo(S8 value, U8 shift_name) { S8 result; if (value < 0) { value = - value; result = value >> shift_name; return -result; } result = value >> shift_name; return result; }