黑马程序员5--进制转换问题

---------------------- android培训java培训、期待与您交流! ----------------------

计算机的存在就是对数据的操作,而底层数据的操作是通过电的开关,就形成了二进制的数据。
十进制是我们常用的进制,二进制是计算机用的进制,而要实现互通,就必须要进行进制转换。
java中数据都有符号位,高位表示符号位。
byte8个二进制位  short16  char16  int32  long64    flaout32   double64
二进制的每三个,是一个八进制的一个,而每四个是十六进制的一位。这样就非常容易进行转换了。
数有原码,反码,补码,计算机的运算都是以补码方式进行的。
正数的原码,反码,补码,都是一样的。
负数的原码是,高位写符号,其余是相对正数的部分,反码是原码取反符号位不变,补码是反码+1。
负数的补码其实就是二进制的真正形式。而人们又不能一下子就写出来,就用了原码(这样就可以让我们直观的写出来),而原码又不是真正的二进制形式,所以用到了反码加一,这样就实现了即方便人理解又是正确的结果。(正数是不需要这些的,但负数引入了,正数就用三者相等,引入原码补码反码)
当时天真的我用正数的二进制取反加一,结果不对。
位运算符就是基于二进制,进行移位操作的。

当a是int类型时,a>>>b时是怎么操作的呢?
很多人会认为是向右移动b位,空位用0来补。
int类型是32位,当移动32位时,是不是就是0呢?
原来我认为是,可以做实验,就发现不对。我百思不得其解,最后在张孝祥老师的就业与指导中找到了答案。
如上例:计算机在移位时,进行了这样的操作(拿a与32取模,然后才是移位的数,当a<32时,模数还是a)

 

 

---------------------- android培训java培训、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值