当前位置:编程学习 > JAVA >>

移位运算是怎么算的

假如是int类型的,占4个字节,32位,为什么左移33和1位是一样的,左移33右边不都补零了吗?那不全是零了。还有1<<31为-2147483648。但是1左移31位最高位不就变成1了,其余位全是0了,那不也是0吗,请高手解答这个是怎么算的 --------------------编程问答-------------------- 位移就是先转成二进制 在移动吧  移完在转换成原来的 --------------------编程问答--------------------
引用 1 楼  的回复:
位移就是先转成二进制 在移动吧  移完在转换成原来的

这个地球人都知道吧 --------------------编程问答--------------------
引用楼主  的回复:
假如是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相关
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,