10进制与2进制相互转换及位移运算符的作用
写这篇文章的时候感觉自己就是个小白,写了那么久代码,其实一直没搞明白10进制与2进制相互转换规则及位移运算符有啥用,在什么场景下用,但是不懂这些你确实也可以写代码,待你绝不会写出优质代码。
首先说下10进制转2进制,就是拿10进制数除2,一直除,直到1,除不开为止,记录每次余数,然后倒过来,就是2进制数,上图
其实你会发现也并没有那么难,只是自己没想过去认真学习一下,接下来是2进制转10进制,就是拿2进制所在的位数的值乘2的所在位数次方,然后相加就是10进制数,上图
对于小数、负数自己再研究,我觉得知道这些就够了,然后再来说下位移运算符,一般左移用<<表示,右移用>>表示,例10>>2,就是10向右移两位,这里可能有点懵,怎么个移法,这里就用到了上面说到的10进制转2进制,是先转换成2进制再进行位移,移动完后再转成10进制,就是所得的值,10转2进制是1010,补齐是00001010(一般都是8位补齐,除非值很大),向右移两位就是成了00000010,右边的两位移出去了,左侧空位补0,00000010转10进制就是(2的1次方*1+2的0次方*0=)2,上图
(左移)
(右移)
现在明白了位移运算符(位移过程中会出现溢出,一般看你位移的类型占位数,像java int占32位,位移超出32位就会溢出,会转成负数,位移运算符不仅能位移数字,因为无论字符、汉字都会最终转成2进制运行),但是他到底有啥用,啥时候用,一般我们写代码还真的很少用,这种东西好像都出现再底层源码中,为什么,因为效率啊,这里仅对java int类型来讲,左移几位就是乘2的几次方,右移几位就是除2的几次方,这时候你知道啥时候用了吧,可以计算用(应该不仅仅用作计算),程序的计算还是比较耗资源的,直接用位运算符它快啊,并且还显得代码有逼格,何乐而不为!