j*****y 发帖数: 1071 | 1 比如
int a = -1
binary 的表示是
10000000000000000000000000000001
a >> 30 会是多少呢? |
c*****a 发帖数: 808 | 2 -1是111111.....1111吧? in 2's complement |
j*****y 发帖数: 1071 | 3 对的, 用 2-compliment
不过我试了
int a = -1
a>> 31 和 a>> 30 的输出都是 -1, 不理解
【在 c*****a 的大作中提到】 : -1是111111.....1111吧? in 2's complement
|
r*****e 发帖数: 146 | 4 确实, 但是>>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
|
c*****a 发帖数: 808 | 5 觉得是这样shift的吧
8bits: 1111 1111
-1>>4
1000 0111 |
y*******g 发帖数: 6599 | 6 在c++里面是undefined
【在 j*****y 的大作中提到】 : 比如 : int a = -1 : binary 的表示是 : 10000000000000000000000000000001 : a >> 30 会是多少呢?
|
a**********e 发帖数: 22 | 7 在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 会是多少呢?
|
s***g 发帖数: 1250 | |