今天做coursera测试题的时候,一开始听课不是很清楚,做题的时候还错了一次,第二次总算答对了,好了,先把结果贴出来:

这边打印一个右移2位后的负数,负数在计算机里面是用补码的形式表示,+12由于是整型数据,所以表示为00000000 00000000 00000000 00001100(原码)

-12先要对+12的原码取反:11111111 11111111 11111111 11110011(反码)再对反码+1(0001)

11111111 11111111 11111111 11110100 同时二进制位高位是符号位,所以0100变成1100

最终得到-12的二进制数11111111 11111111 11111111 11111100

用16位进制打印出来就是fffffffd