位運算基礎知識

1、二進制與十進制的相互轉化:java

1.十進制轉二進制:class

(1)十進制整數轉二進制數:「除以2取餘,逆序排列,直到商爲0」(除2取餘法)二進制

(2)十進制小數轉二進制數:「乘以2取整,順序排列,直到積中的小數部分爲0,或者達到所要求的精度爲止」(乘2取整法)static

二、二進制轉十進制:移動

個位上的數字的次數是0,十位上的數字的次數是1,......,依次遞增,而十數字

分位的數字的次數是-1,百分位上數字的次數是-2,......,依次遞減。位運算

 

2、java中的運算符運算符

Java的運算符,分爲四類:void

算數運算符關係運算符邏輯運算符、位運算符。

算數運算符(9):+  -  *  /  %  ++  --

關係運算符(6):==  !=  >  >=  <  <=

邏輯運算符(6):&&  ||  !  ^  &  |  

邏輯與'&&'邏輯或'||'邏輯非'!'邏輯異或'^'邏輯與'&'邏輯或'|'

位運算符(7):&  |  ~  ^  >>  <<  >>>

位與'&'位或'|'位非'~'位異或'^'右移'>>'左移'<<'0填充的右移'>>>' 

位運算:

右移是將一個二進制數按指定移動的位數向右移位,移掉的被丟棄,左邊移進的部分或者補0(當該數爲正時)
或者補1(當該數爲負時)。這是由於整數在機器內部採用補碼錶示法,正數的符號位爲0,負數的符號位爲1。
將一個數左移"<<"會使該值乘以2的冪。
將一個數右移>>"會使該值除以2的冪。
右移(補零)運算符,即無符號右移,">>>"永遠不會產生負號,由於其符號位老是被補零。 
不論被移動數是正數仍是負數,左邊移進的部分一概補0。
public class Test {
	public static void main(String[] args) {
		// 一、左移( << )
		// 0000 0000 0000 0000 0000 0000 0000 0101 而後左移2位後,低位補0://
		// 0000 0000 0000 0000 0000 0000 0001 0100 換算成10進製爲20
		System.out.println(5 << 2);// 運行結果是20

		// 二、右移( >> ) 高位補符號位
		// 0000 0000 0000 0000 0000 0000 0000 0101 而後右移2位,高位補0:
		// 0000 0000 0000 0000 0000 0000 0000 0001
		System.out.println(5 >> 2);// 運行結果是1

		// 三、無符號右移( >>> ) 高位補0
		// 例如 -5換算成二進制後爲:0101 取反加1爲1011
		// 1111 1111 1111 1111 1111 1111 1111 1011
		// 咱們分別對5進行右移3位、 -5進行右移3位和無符號右移3位:
		System.out.println(5 >> 3);// 結果是0
		System.out.println(-5 >> 3);// 結果是-1
		System.out.println(-5 >>> 3);// 結果是536870911

		// 四、位與( & )
		// 位與:第一個操做數的的第n位於第二個操做數的第n位若是都是1,那麼結果的第n爲也爲1,不然爲0
		System.out.println(5 & 3);// 結果爲1
		System.out.println(4 & 1);// 結果爲0

		// 五、位或( | )
		// 第一個操做數的的第n位於第二個操做數的第n位 只要有一個是1,那麼結果的第n爲也爲1,不然爲0
		System.out.println(5 | 3);// 結果爲7

		// 六、位異或( ^ )
		// 第一個操做數的的第n位於第二個操做數的第n位 相反,那麼結果的第n爲也爲1,不然爲0
		 System.out.println(5 ^ 3);//結果爲6 

		// 七、位非( ~ )
		// 操做數的第n位爲1,那麼結果的第n位爲0,反之。
		System.out.println(~5);// 結果爲-6 
	} 
}
相關文章
相關標籤/搜索