移位运算是怎么算的
假如是int类型的,占4个字节,32位,为什么左移33和1位是一样的,左移33右边不都补零了吗?那不全是零了。还有1<<31为-2147483648。但是1左移31位最高位不就变成1了,其余位全是0了,那不也是0吗,请高手解答这个是怎么算的 --------------------编程问答-------------------- 位移就是先转成二进制 在移动吧 移完在转换成原来的 --------------------编程问答--------------------这个地球人都知道吧 --------------------编程问答--------------------
楼主应该去了解了解负数的计算机表示方式,负数是用补码表示的所以符号位是1的时候00000000000反而是最大的数了 --------------------编程问答-------------------- 1<<31就是1000 0000 0000 0000 0000 0000 0000 0000啊,在int范围内的话就32位,第一位是符号位,1代表-,就是-(2G-1),如果你强制转化为long
(long)1<<31,64位了,他就是+2G了
补充:Java , Java相关