本次咱們來說講編程,編程這個概念真是太大了,但不要緊,散談嘛,我就隨意一點來說,涉及到編程裏面的一些概念和一些重要的東西,OK開始前端
編程爲啥要知道0和1呢?那必須的啊,由於計算機最終仍是二進制存儲嘛,也就是說咱們存的數據最終都是由不少0和不少1的隨意組合來構成。那麼,二進制的東西咱們須要懂得多少呢?它和編程有多大的關係?編程
二進制運算,位運算,這些東西,其實仍是有必要知道一下,主要包含如下幾個運算符,我來依次羅列並闡述一下編程語言
按位與, a & b, 所有爲1則爲1,不然爲0
按位或, a | b, 所有爲0則爲0,不然爲1
按位異或, a xor b或者 a ^ b,不一樣則爲1,相同則爲0
按位取反, ~a, 1變0,0變1
左移,<<,好比1變成10,10變成100,至關於乘以2
右移,>>,好比100編程10,10變成1,至關於除以2搜索引擎
位運算有用嗎?固然有用,並且若是熟練運用,編程會變得很是有趣。最經典的一個問題就是老鼠試毒藥的問題了編碼
有1000個如出一轍的裝有水的瓶子,其中有一個瓶子裏的水是有毒的。如今有10只老鼠,要求每一個老鼠只能喝一次水,喝到含有毒的水老鼠就會立刻死亡。如何在儘量短的時間內,經過老鼠喝水找到那瓶有毒的瓶子呢索引
初學者若是沒有二進制位的一些知識,恐怕很難懂得這個題的解題思路。不過不用糾結,最開始我也是百思不得其解。這裏我講解一下思路:內存
1000個瓶子小於2的10次方,就是說[][][][][][][][][][],使用10個位的二進制位能夠存儲足夠多的1~1000之內的編號,好比1就是0000000001,好比3就是0000000011,依次類推。
我仍是用一個簡單的例子,8個瓶子,4只老鼠。將8個瓶子按1到8編號,將3只老鼠按位編號,因此從1到8用位表示爲 0001(1) 0010(2) 0011(3) 0100(4) 0101(5) 0110(6) 0111(7) 1000(8)。能夠看到,第一位(從右到左數)爲1的是一、三、五、7,OK,把1357四瓶水摻合在一塊兒餵給老鼠1,同理,第二位爲1的是二、六、7,把二、六、7餵給老鼠2,第三位爲1的是六、7,把6和7餵給老鼠3,第四位爲1的只有8號瓶了,把8號瓶餵給老鼠4.好,如今假設6是真的毒藥,那麼6對應的二進制是0110,給第二個老鼠和第三個老鼠喝過了,老鼠2和老鼠3都死了。因而4個老鼠就是0110,能夠反推出瓶子6了。這個能夠仔細醞釀思考一番。數學
OK今天就講到這裏,明天再來,講講編程基礎it