位運(yùn)算的實(shí)際作用 把圓周率精確到那么多位有什么用,你怎么看?
把圓周率精確到那么多位有什么用,你怎么看?圓周率的定義是周長與直徑的比值。自從人們發(fā)現(xiàn)了這個(gè)比率,就開始努力計(jì)算出準(zhǔn)確的數(shù)值。古時(shí)候,劉暉用切圓的手法,即利用正多邊形的內(nèi)接圓和逐層按壓的原理,計(jì)算出3
把圓周率精確到那么多位有什么用,你怎么看?
圓周率的定義是周長與直徑的比值。自從人們發(fā)現(xiàn)了這個(gè)比率,就開始努力計(jì)算出準(zhǔn)確的數(shù)值。古時(shí)候,劉暉用切圓的手法,即利用正多邊形的內(nèi)接圓和逐層按壓的原理,計(jì)算出3072多邊形,計(jì)算出π為3.1416。后來祖沖之成了大師。他把圓周率精確到3.1415926到3.1415927之間,比世界領(lǐng)先1000多年。
事實(shí)上,在近兩千年的時(shí)間里,圓切術(shù)是人們計(jì)算圓周率的唯一方法。直到現(xiàn)代分析的發(fā)展,人們才可以用無窮大的數(shù)來計(jì)算任意個(gè)π值?,F(xiàn)在人們已經(jīng)計(jì)算出了60萬億個(gè)小數(shù)位。
事實(shí)上,只要我們?nèi)ˇ械淖詈?5位數(shù)字,我們就可以將太陽系的尺寸誤差限制在質(zhì)子直徑的百萬分之一以內(nèi)。事實(shí)上,人們不能用π這樣精確的值。然而,是什么讓人們這么多年來仍然癡迷于尋找更多的π數(shù)呢?
首先,π的算法是不斷變化的。人們可以通過求π的值來測試計(jì)算機(jī)硬件的性能。每個(gè)人都有一個(gè)深刻的認(rèn)識,如果硬件配置高,執(zhí)行軟件的速度將是不同的。當(dāng)然,計(jì)算π的速度會有所不同。
其次,最重要的是通過簡單的π計(jì)算過程,在最短的時(shí)間內(nèi)測試算法的及時(shí)性。有些算法經(jīng)過2步就可以得到π值最后10位的精度,有些算法需要數(shù)百步才能達(dá)到同樣的效果。通過簡單的π計(jì)算過程,可以記錄算法的時(shí)空復(fù)雜度,為人們的優(yōu)化提供更好的參考。在此基礎(chǔ)上,人們將逐步得到更高效、更方便的算法。
位與運(yùn)算是什么?
數(shù)字和操作是兩個(gè)不同的概念。數(shù)字是一個(gè)有幾個(gè)數(shù)字的數(shù)字,例如23456是一個(gè)五位數(shù)的數(shù)字,而運(yùn)算是一個(gè)公式,例如20 10 30
=30 30
=60
C語言中的位運(yùn)算有什么優(yōu)點(diǎn)?
在一定的情況下,計(jì)算起來方便快捷,比如網(wǎng)絡(luò)地址的計(jì)算,IP1:192.168.0.11ip2:192.168.0.51掩碼:255.255.255.0數(shù)據(jù)分別用四個(gè)字節(jié)表示。當(dāng)您要計(jì)算子網(wǎng)地址時(shí),您可以使用“掩碼邏輯或IP”操作來獲得IP1和IP2屬于同一子網(wǎng)。當(dāng)您想計(jì)算這兩個(gè)地址本身時(shí),可以使用邏輯和運(yùn)算。如果用算術(shù)的方法,速度慢邏輯復(fù)雜,在單片機(jī)的情況下,有些復(fù)雜的算術(shù)指令可能不太支持,但位運(yùn)算是基本的邏輯運(yùn)算,99.9999%的芯片都支持這種運(yùn)算
位和運(yùn)算符“&”是一種雙目運(yùn)算符。它的功能是參與兩個(gè)相應(yīng)的二相和二相的運(yùn)算。只有當(dāng)對應(yīng)的兩個(gè)二進(jìn)制位為1時(shí),結(jié)果位才為1,否則為0。操作中涉及的數(shù)字的補(bǔ)碼出現(xiàn)。例如:9&5可以寫為:00001001(9的二進(jìn)制補(bǔ)碼)和00000101(5的二進(jìn)制補(bǔ)碼)00000001(1的二進(jìn)制補(bǔ)碼),所以9&5=1。位和運(yùn)算通常用于清除或保留某些位。例如,如果a的高8位被清除為0,低8位被保留,則可以執(zhí)行&;255操作(255的二進(jìn)制數(shù)是0000000011111)。有時(shí)我們的程序需要一個(gè)小哈希表來記錄狀態(tài)。例如,做數(shù)獨(dú)時(shí),我們需要27個(gè)哈希表來計(jì)算每行、每列和每個(gè)小九宮格中的數(shù)字。此時(shí),我們可以記錄27個(gè)小于2^9的整數(shù)。例如,一個(gè)只填寫了2和5的小九宮用數(shù)字18(二進(jìn)制是000010010)表示,一行的狀態(tài)是511,這意味著該行已經(jīng)被填充。當(dāng)需要改變狀態(tài)時(shí),不需要將數(shù)字轉(zhuǎn)換成二進(jìn)制,修改后再返回,而是直接進(jìn)行位運(yùn)算。在搜索時(shí),最好將狀態(tài)表示為整數(shù)來判斷是否重復(fù)。