单片机中,c语言有符号变量 移位是时符号位会移位吗?

回答者:landshut
首先要搞懂计算机所有数据都补码形式进行存储对于正数而言原码、反码和补码均相同没好研究 而对于负数则有所同负数反码原码除符号位变外其余位按位取反补码则反码基础上加1 对于下操作均补码形式进行存储时操作 << 表示左移位例 int i=5;i<<2;表示对于变量i左移2位无论正数还负数左移操作均高位舍弃低位补0 >> 表示右移位例 int i=5; i>>2;表示对于变量i右移2位正数右移操作低位舍弃高位补0负数右移操作低位舍弃高位补1 >>> 表示无符号右移位管正数还负数进行无符号右移操作均低位舍弃高位补0