小古銀的官方**(完整教程):
補充知識(了解即可)
鞏固練習
當你完成上一部分教程的全部練習後,相信你應該可以靈活地使用c++去解決大部分問題,尤其是數學問題。
本部分教程將講解c++中必須知道的計算機基礎知識,知道這些知識可以避免不少的錯誤,還可以對程式**進一步優化。由於這部分教程只講解c++需要知道的計算機基礎知識,所以並不會太多和太複雜。
計算機處理資料是由電路控制的,電路只有兩種狀態:開和關,因此計算機上的所有資料都是二進位制的資料,然後用一定的規則將這些資料表示成十進位制數字、文字、和其他各種各樣的形式,所以接下來的內容都是圍繞二進位制而講解的。
學習這部分教程才能更好地理解後續的教程,只要用心地去學就不會有問題。這部分知識了解即可不必深入,如果有興趣,深入也無妨。
在講解二進位制相關知識前,先講解c++中數值的各種表示方式和各種操作。
寫**的時候,難免會遇到一些比較大的數。用乙個很小的數做例子,例如先賺它乙個億(●』◡』●)。那麼我們寫**的時候,一億在**中的寫法是100000000
。
為了方便閱讀數字,可以用單引號'
分隔一下,這個單引號叫做數字分位符。一億就可以寫成這樣子:1'0000'0000
,一看就知道一億。
先看以下**:
#include int main(void)
輸出結果:
一億:100000000
一百萬:1000000
這種寫法就不好了:100000000
輸出還是正常的數值輸出,不會在輸出的數值裡顯示數字分位符,因為數字分位符是為了方便閱讀**而出現的。但是第三種寫法並不能方便閱讀**,所以不是乙個好的寫法。
對於乙個十進位制的15
,可以表示成二進位制的1111
,也可以表示成八進位制的17
,也可以表示成十六進製制的f
。儘管15
、1111
、17
、f
看上去不一樣,但是它們都是同乙個整數,只是表示方法不一樣。
先看以下例子:
#include int main(void)
輸出結果:
15
1515
15
可以看到它們都是輸出15
,因為它們都是同乙個數字的不同表示方法,而std::cout
預設以十進位制顯示,所以都顯示15
。
在**中,預設以十進位制來表示數字,如果要用其他進製表示乙個數字,需要一些特殊的說明:
至於為什麼不只是用十進位制,還要新增這麼多表示方式,其實很簡單,因為有一些數**算,有時候,不用十進位制而用其他進製運算更加容易理解,方便程式設計師做數**算。初學者只要理解並背下來,以後將會用得上。
有時候,當用十六進製制運算完後,極有可能想看看十六進製制的結果,然而,std::cout
預設顯示的是十進位制。這時候,我們就要告訴std::cout
我要用十六進製制顯示。
先看下面例子:
#include int main(void)
輸出結果:
十六進製制 11 + 22 的結果是:
預設:51
八進位制:63
十六進製制:33
十進位制:51
當我們需要輸出八進位制時,需要先輸出std::oct
;當我們需要輸出十六進製制時,需要先輸出std::hex
。如果想再次輸出十進位制,就必須要先輸出std::dec
;否則,將會繼續以前一次使用的進製(上面**就是十六進製制)來輸出。其中std::oct
、std::dec
、std::hex
在iostream
庫中。
仔細的你應該發現了,我沒有寫二進位制輸出。二進位制的輸出方法跟上面的有些不同,因為std::cout
沒有直接的二進位制輸出。如果想輸出二進位制數字,則可以使用std::bitset
,它在bitset
標準庫中。使用std::bitset《二進位制的位數》(數字)
就可以輸出二進位制了,具體用法如下:
#include // std::cout std::endl
#include // std::bitset
int main(void)
輸出結果:
十六進製制 11 + 22 的結果是:
二進位制:00110011
預設:51
由於這次輸出不改變std::cout
的行為,所以預設還是輸出十進位制:
std::cout << "預設:" << 0x11 + 0x22 << std::endl;
**中,std::bitset<8>(0x11 + 0x22)
指定了8位二進位制(不足8位則在左邊用0
補夠8位):
浮點型即小數。
同樣,輸出顯示十六進製制浮點型需要先輸出std::hexfloat
,它在iostream
標準庫中:
#include int main(void)
輸出結果:
30
0x1.e00000p+4
數字分位符從c++11開始加入。
二進位制表示法(即0b
)從c++11開始加入。
十六進製制的浮點型表示方法和十六進製制的浮點型科學記數法從c++17開始加入。
std::hexfloat
從c++17開始加入。
輸入三個整數a
,b
,c
,然後分別按順序以八進位制,十進位制,十六進製制的表示方法,輸出這三個整數的和。
c 入門教程 十五
好久沒敲黑板了 前方高能預警 今天的內容可能有些繞,但是,蠻有用的。至少,好玩。前面我們說過,宣告乙個變數,相當於在記憶體中要了一塊空間。不同型別的變數要的空間的大小是不一樣的。既然有了空間,那麼,它就有個開始的位置 比如學校就有門牌號 我們用符號 來獲取乙個變數的位址。用法如下 要獲取首位址的變數...
Golang入門教程(十五)指標
指標是乙個變數,用於儲存另乙個變數的記憶體位址。在上面的例子中,變數b的值是156,儲存在記憶體位址0x1040a124。變數a包含b的位址。可以說現在a指向b。指向型別t的指標用 t表示 讓我們寫一些 package main import fmt func main 運算子用於獲取變數的位址。在...
Golang入門教程(十五)指標
指標是乙個變數,用於儲存另乙個變數的記憶體位址。在上面的例子中,變數b的值是156,儲存在記憶體位址0x1040a124。變數a包含b的位址。可以說現在a指向b。指向型別t的指標用 t表示 讓我們寫一些 package main import fmt func main 運算子用於獲取變數的位址。在...