計算機儲存的資料
音訊---->*.*** *m4a *.wma
他們都是以特殊的編碼格式存在計算機中的。
例如 :*.*** 格式 也是一種 音訊壓縮技術。mp4特殊中的壓縮格式(高畫質的格式)。
數值資料
10進製數,特點逢10進1。10進製數 是我們人類交流的時候用的。
計算機處理這些資料 100,10,15等這些10進製資料的對應的2進製數。
計算機語言 叫機器語言是二進位制的。
二進位制的數是由 0 和1 兩個數字組成,特點逢二進一。
計算機想要表示是乙個二進位制 0000 0101(2)
10進製的整數 ------>2進製的數
例如:10 這個轉換成2進製數。
2.1 輾轉相除法
輾轉相除法求乙個10進製數的2進製,迴圈對2取餘數,直到商為0,逆序輸出 餘數。
例如:10/2 商 5 餘 0
5/2 商 2 餘 1
2/2 商 1 餘 0
1/2 商0 餘 1
這個數的二進位制數 就是 餘數逆序輸出0000 1010(2)
練習:求以下10進製數的對應的二進位制的數。
32 ---->0010 0000(2) 2^5
8 ---->0000 1000(2) 2^3
64
50第二種計算10進製數的2進製數(口算 200以內的二進位制數)
二進位制數 0000 1010(2)
2---->叫做基數
從左到右 叫做 由高位到低位。每乙個2進製位上的數 都對應乙個位的位權。位權就表示這一位2進製數對應的2的幾次方。
最右邊的這一位:2^0 = 1;
右邊的第二位:2^1 = 2;
2進製數----->10進製數
0000 1010 = 0*2^0 + 1*2^1+0*2^2+1*2^3 = 0+2+0+8 = 10
快速計算2進製數的方法(200以內)
2^8 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
256 128 64 32 16 8 4 2 1
130 0 1 0 0 0 0 0 1 0
10 0 0 0 0 0 1 0 1 0
32 0 0 0 1 0 0 0 0 0
127 0 0 1 1 1 1 1 1 1
110 0 0 1 1 0 1 1 1 0
98進製數 是由0~7共8個數字組成的,逢八進一。
一般我們表示乙個數的8進製 0開頭 如 0123 或者 123(8)
輾轉相除法 迴圈對8取餘數,直到商為0,逆序輸出餘數。
16進製制數 是由0~9共10個數字 以及字母a~f,組成的一 個逢十六進一的數字。
一般表示格式為:0x00f423c04或0x00f423c04或
00f423c04(16)
通常 我們表示記憶體位址時使用。
1>把10進製整數----->16進製制整數
輾轉相除法,迴圈對16取餘數,直到商為0,逆序輸出。
0~9 a = 10 b=11 c=12 d=13 e=14 f=15
例如:65這個數的16進製制數
65/16 商4 餘 1
4/16 商0 餘 4
用:0x開頭表示這個數 0x41
2>把16進製制整數----->10進製的整數
16^2 16^1 16^0
0 4 1
計算結果 = 1*16^0 + 4*16^1 = 1 + 64 = 65
練習:計算以下10進製整型的2進製 和 16進製制數分別是多少
99 85 14 56 80 77 150 126 101
99----> 0110 0011(2)
0x63
85---->0101 0101(2)
0x55
14----->0000 1110(2)
0xe56----->0011 1000(2)
0x38
80----->0101 0000(2)
0x50
77----->0100 1101(2)
0x4d
150---->1001 0110(2)
0x96
126----> 0111 1110(2)
0x7e
101----->0110 0101(2)
0x65
數在計算機中儲存,不光只能儲存一些正數,還有負數。在計算中 負數是通過這個數的二進位制數的 符號位來表示
的。乙個二進位制數的最高位 為符號位。來表示+ -,如果該位上的數為0 就表示這個乙個正整數,如果該位上的數
為1 就表示這個數是乙個負整數。
數值有正負之分,整數是怎麼樣儲存在計算中的,乙個數的最高位為符號位,表示正負,這就是機器數(2進製)的原始碼。假設計算機的cpu**處理器能夠處理的位數 8位 ,就是乙個位元組1byte = 8bit,那麼原始碼能表示的數值的範圍就是
從-128 ~ 0~ 127 共 256個
有了數值的表示方法 就可以進行對數字的算術運算。(+ -
* /),但是很快就能發現乙個問題,就是帶符號位的原始碼進行乘法 或 除法運算時結果是正確的,但是加法 和 減法的運算有時候可能會出現問題。
整數都是以它的補碼的形式存在我們計算機中的。
原始碼 反碼 補碼
+ 原始碼反碼補碼都相同,就是這個數的2進製數。
- 負數的原始碼 = 先取絕對值以後 得到的這個正數的2進製數的值,然後再把最高位置成 1 。
負數的反碼 = 這個數的原始碼保持符號位不變,其餘的每乙個2進製位上的數都取反(除了符號位以外 0->1 1->0)
負數的補碼 負數的補碼就是在原始碼的反碼的基礎上+1。
補碼的設計目的:(負數 四則運算用的)
1.使符號位能夠與有效的值的部分一起來參與運算(+),從而簡化運算的規則。(印度人發明的)
2.使得減法運算 轉化為 加法運算。
(這些的轉換都是在計算機的最底層來實現的)。
-5 這個數的原始碼
第一步 :|-5| = 5 這個數的2進製數 0000 0101
第二步 :把最高位置成符號位 1000 0101(2)
練習:-28 這個數的原始碼是多少?
第一步:|-28| = 28 0001 1100(2)
第二步:1001 1100(2) 表示了-28的原始碼
-5 這個數的反碼
第一步 :|-5| = 5 這個數的2進製數 0000 0101
第二步 :把最高位置成符號位 1000 0101(2) 原始碼
在原始碼的基礎上 保持符號位不變
1000 0101(2) 原始碼 或1000 0101b
1111 1010(2) 反碼 ---->除了符號位 以外的其它的位上的數
練習:-28 這個數的反碼是多少?
第一步:|-28| = 28 0001 1100(2)
第二步:1001 1100(2) 表示了-28的原始碼
1110 0011(2) 或 1110 0011b 反碼
c 數制2 16數進製的轉換
通項公式 while n 0 其中n為要轉換的十進位制的數。d為要轉換的數制,如二進位制為2.include using namespace std intmain while i cout cout return0 缺點 因為陣列a存放的是數字,上述 只能轉換小於10的數制。在16進製制下,其實當...
C語言之指標和陣列 2
字元指標和函式 該節主要介紹字串陣列的指標,即關於字串處理的函式的指標。1 當字串出現在程式中時,例如 printf hello,world 是通過字元指標獲取到它,printf函式接收到乙個字元陣列開始的位址,也就是說,字串常量是通過指向它的首元素的指標獲取到的。2 字串常量沒有必要必須作為函式的...
c語言之進製轉換(棧實現)
從上兩篇部落格中我們可以知道,棧具有後進先出的特性,而進製轉換的列印輸出剛好與計算過程相反,滿足棧這後進先出的特性,所以可以用棧很快的實現進製轉換,下面是用棧實現進製轉換的c函式 void conversion sqstack pstack,unsigned int n,const unsigned...