小菜的前端編程散談(2)

小菜的前端編程散談(2)

本次咱們來說講編程,編程這個概念真是太大了,但不要緊,散談嘛,我就隨意一點來說,涉及到編程裏面的一些概念和一些重要的東西,OK開始前端

0和1

編程爲啥要知道0和1呢?那必須的啊,由於計算機最終仍是二進制存儲嘛,也就是說咱們存的數據最終都是由不少0和不少1的隨意組合來構成。那麼,二進制的東西咱們須要懂得多少呢?它和編程有多大的關係?編程

  1. 二進制的存儲,十進制是用滿十進一,那麼二進制固然就是滿二進一。因此,十進制中9以後就是10,19以後就是20。而二進制中01以後就是10(對應十進制就是2),11(對於十進制就是3)以後就是100(對應十進制就是4)。OK,若是你學了點編程的東西,那麼建議你練練手,實現二進制和十進制之間的轉換。固然這種轉換是應用層面的,由於最終在計算機眼裏,全部的數據全是二進制,沒有所謂的十進制。好比一個整數4,在內存地址中表現出來的值就是100(注意這裏不是指一百,而是3個連續的內存地址,它們分別存放一、0和0),整數6就是110。初學者能夠思考一下這裏面的數學知識
  2. 二進制的表示,上面說到0和1,這實際上在計算機中叫作位,一個位就是一個Bit,在計算機中,一般用8個Bit來表示一個基礎字節單位,就是byte。用數學知識能夠得知,8個Bit能夠存放0~255(2的8次方減1)之間的數字。1KB等於1024個字節,1MB等於1024,一致遞推
  3. 數據的存儲表示,要熟悉計算機二進制的原碼、補碼和反碼的表示法,這個具體能夠自行上網搜索引擎瞭解,好比補碼,對於有符號整型數據,好比32位的整數,第一位表示符號,就是正負。還有針對小數(計算機裏叫浮點數),如何表示小數呢?那就是講某些位用來表示負數位,-1就是2的-1次方就是0.5,-2就是2的-2次方就是0.25,依次類推,能夠知道小數其實只是一直模糊漸進,並非精確的,這就是浮點數IEEE標準表示法,無論任何編程語言都是使用這些標準。還有就是針對字符,咱們看到的英文字母、標點符號、漢字這全都是字符,字符是如何表示的呢?好比一個字節8個位,能夠存儲255個數字,每一個數字對應一個符號或者字母或者數字。這個最原始的一個字典表叫作ASCII編碼,再日後,針對中文字符或者阿拉伯字符等複雜的字符,就是用更加複雜的字符集來表示了,這些東西知道是怎麼回事兒就好了,沒必要深究
  4. 二進制運算,位運算,這些東西,其實仍是有必要知道一下,主要包含如下幾個運算符,我來依次羅列並闡述一下編程語言

    按位與, 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

相關文章
相關標籤/搜索