c3=~c1^c2<<2
按照优先级,可以写成
c3 = (~c1)^(c2<<2)
= (~00000011) ^ (00000111<<2)
= 11111100 ^ 00011100
= 11100000
而11100000是16进制的0xe0,如果用%x的形式打印出来,就是要把11100000当作8bit的无符号数来看待结果就是e0。
如果用%d的形式打印出来,因为要把11100000当作8bit的有符号数来看待,那么就需要把11100000当作有符号数的补码来看,计算一下它作为补码的时候所表示的负数如下:
正数补码表示的有符号数 = 补码本身
负数补码表示的有符号数 = 负的(补码除符号位外的其他比特位取反 + 1)
所以,负数11100000表示的有符号数 = 负的((~1100000)+1)= 负的100000 = 负的32
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。