1. 程式人生 > 實用技巧 >程式設計師的數學基礎課 1 append

程式設計師的數學基礎課 1 append

數學學霸半年逆襲託福?每天只要兩小時,從77分到102分,超簡單

public class Lesson1_append1 {
	
	public static void main(String[] args) {
		//偶數,奇數 count
		int even_cnt = 0, odd_cnt = 0;
		//開始,技術時間
		long start = 0, end = 0;
		
		start = System.currentTimeMillis();
		for (int i = 0; i < 100000000; i++) {
			//i與1
			/**
			 * 請記住“&”是一個按位操作.您可能已經意識到這一點,但根據您提出問題的方式,我並不完全清楚.
			 * 話雖這麼說,理論上的想法是你有一些int,可以通過一些1和0的系列來表示.例如:
			 *
			 * ...10110110
			 * 複製程式碼
			 * 在二進位制中,因為它是基數2,只要數字的按位版本以0結尾,它就是偶數,當它以1結尾時它是奇數.
			 *
			 * 因此,做一個按位&以上為1是:
			 */
			if((i & 1) == 0){
			    even_cnt ++;
			}else{
			    odd_cnt ++;
			}
			
		}
		end = System.currentTimeMillis();
		System.out.println(end - start);
		System.out.println(even_cnt + " " + odd_cnt);
		
		even_cnt = 0;
		odd_cnt = 0;
		start = 0;
		end = 0;
		
		start = System.currentTimeMillis();
		for (int i = 0; i < 100000000; i++) {
			/**
			 * 取餘2==0為偶數
			 */
			if((i % 2) == 0){
			    even_cnt ++;
			}else{
			    odd_cnt ++;
			}
			
		}
		end = System.currentTimeMillis();
		System.out.println(end - start);
		System.out.println(even_cnt + " " + odd_cnt);
		
		
		start = System.currentTimeMillis();
		/**
		 * 交換數字
		 */
		for (int i = 0; i < 100000000; i++) {
			int x = 3, y = 5;
			x = (x ^ y);
			y = x ^ y;
			x = x ^ y;
		}
		end = System.currentTimeMillis();
		System.out.println(end - start);
		
		start = System.currentTimeMillis();
		for (int i = 0; i < 100000000; i++) {
			int x = 3, y = 5, t = 0;
			t = y;
			y = x;
			x = t;
		}
		end = System.currentTimeMillis();
		System.out.println(end - start);
		
//		System.out.println(x + " " + y);

	}

}