负数移位是怎么搞的阿# JobHunting - 待字闺中j*y2013-01-13 08:011 楼比如int a = -1binary 的表示是 10000000000000000000000000000001a >> 30 会是多少呢?
j*y2013-01-13 08:013 楼对的, 用 2-compliment不过我试了int a = -1a>> 31 和 a>> 30 的输出都是 -1, 不理解【在 c*****a 的大作中提到】: -1是111111.....1111吧? in 2's complement
r*e2013-01-13 08:014 楼确实, 但是>>1的时候,left most bit is 0 or 1? 还是说跟编译器相关?I tried with g++ 4.5.2 in linux, (-1>>1)== -1...所以是补的1 in my case.【在 c*****a 的大作中提到】: -1是111111.....1111吧? in 2's complement
y*g2013-01-13 08:016 楼在c++里面是undefined【在 j*****y 的大作中提到】: 比如: int a = -1: binary 的表示是 : 10000000000000000000000000000001: a >> 30 会是多少呢?
a*e2013-01-13 08:017 楼在java 和c里面是不一样的java 里面有>> 和>>>-1在java中的表示是1取反+1 也就是111111.....11111(32bit)如果你在java里面>>30 右移30位,前面要全部补1,所以还是111111.....111(32)但是你可以试试>>>30,右移30位,前面补0,结果就是3了【在 j*****y 的大作中提到】: 比如: int a = -1: binary 的表示是 : 10000000000000000000000000000001: a >> 30 会是多少呢?