C++有无符号右移,需要先转换补码再移动
负数:例如-4>>2(高位补1)首先写出-4的二进制数,因为是负数所以最高位为11000 0000 0000 0000 0000 0000 0000 0100然后写出-4补码:保证符号位不变,其余位置取反加1(从右往左遇到第一个1,然后剩下的全部取反就是了)1111 1111 1111 1111 1111 1111 1111 1100(补码)右移2位: 在高位补11111 1111 1111 1111 1111 1111 1111 1111根据补码写出原码才是我们所求的结果, 保留
转载
2022-04-11 09:31:16 ·
351 阅读 ·
0 评论