p*********r 发帖数: 40 | 1 对于signed type, 比如signed int
右移还好说,补的是符号位
但是左移的时候完全有可能把符号位正负改变啊
比如二进制的 1001, 本来是-7
1001 << 2 变成了 0100,这就是4了
好像有点不合理,比如说用移位来代替除法的时候得到的结果就会错了
究竟怎么回事呢? | p***o 发帖数: 1252 | 2 乘溢出,左移哪来的除法
【在 p*********r 的大作中提到】 : 对于signed type, 比如signed int : 右移还好说,补的是符号位 : 但是左移的时候完全有可能把符号位正负改变啊 : 比如二进制的 1001, 本来是-7 : 1001 << 2 变成了 0100,这就是4了 : 好像有点不合理,比如说用移位来代替除法的时候得到的结果就会错了 : 究竟怎么回事呢?
| g*********e 发帖数: 14401 | 3 移位就是移位 能不是代替乘除法不是移位需要take care的,而是写程序的人需要
考虑的。 |
|