二,八,一○,一六進製制的轉換:
2. 數制之間的轉換(1)十進位制整數轉換為二進位制整數
採用基數2連續去除該十進位制整數,直至商等於「0」為止,然後逆序排列餘數。
(2)十進位制小數轉化為二進位制小數
連續用基數2去乘以該十進位制小數,直至乘積的小數部分等於「0」,然後順序排列每次乘積的整數部分。
(3)十進位制整數轉換為八進位制整數或十六進製制整數
採用基數8或基數16連續去除該十進位制整數,直至商等於「0」為止,然後逆序排列所得到的餘數。
(4)十進位制小數轉換為八進位制小數或十六進製制小數
連續用基數8或基數16去乘以該十進位制小數,直至乘積的小數部分等於「0」,然後順序排列每次乘積的整數部分。
(5)二、八、十六進製制數轉換為十進位制數
用其各位所對應的係數,按「位權展開求和」的方法就可以得到。其基數分別為2、8、16。
(6)二進位制數轉換為八進位制數
從小數點開始分別向左或向右,將每3位二進位制數分成1組,不足3位數的補0,然後將每組用1位八進位制數表示即可。
(7)八進位制數轉換為二進位制數
將每位八進位制數用3位二進位制數表示即可。
(8)二進位制數轉換為十六進製制數
從小數點開始分別向左或向右,將每4位二進位制數分成1組,不足4位的補0,然後將每組用一位十六進製制數表示即可。
(9)十六進製制數轉換為二進位制數
將每位十六進製制數用4位二進位制數表示即可。
【例2.1】將十進位制整數(105)10轉換為二進位制整數,採用「除2倒取餘」的方法,過程如下:
2 ︳105
2 ︳52 餘數為1
2 ︳26 餘數為0
2 ︳13 餘數為0
2 ︳6 餘數為1
2 ︳3 餘數為0
2 ︳1 餘數為1
0 餘數為1
所以,(105)10=(1101001)2
【例2.2】將十進位制小數(0.8125)10轉換為二進位制小數,採用「乘2順取整」的方法,過程如下:
0.8125×2=1.625 取整數字1
0.625×2=1.25 取整數字1
0.25×2=0.5 取整數字0
0.5×2=1.0 取整數字1
所以,(0.8125)10=(0.1101)2如果出現乘積的小數部分一直不為「0」,則可以根據精度的要求擷取一定的位數即可。
【例2.3】將十進位制整數(2347)10轉換為十六進製制整數,採用「除16倒取餘」的方法,過程如下:
16 ︳2347
16 ︳146 餘數為11(十六進製制數為b)
16 ︳ 9 餘數為2
0 餘數為9
所以,(2347)10=(92b)16
含小數字的二進位制數轉為10進製數:
小數部分從小數點位置開始:1/2,1/4,1/8,1/16....
即:1010.1011=>8+2+1/2+1/8+1/16
(「^」代表冪)
1101.0111=>1*2^3+1*2^2+0*2^1+1*2^0+0*2^(-1)+1*2^(-2)+1*2^(-3)+1*2^(-4)
原碼,反碼,補碼,移碼 原碼
正數的符號位為0,負數的符號位為1,其它位按照一般的方法來表示數的絕對值。用這樣的表示方法得到的就是數的原碼。
【例2.13】當機器字長為8位二進位制數時:
x=+1011011 [x]原碼=01011011
y=+1011011 [y]原碼=11011011
[+1]原碼=00000001 [-1]原碼=10000001
[+127]原碼=01111111 [-127]原碼=11111111
原碼表示的整數範圍是:
-(2n-1-1)~+(2n-1-1),其中n為機器字長。
則:8位二進位制原碼表示的整數範圍是-127~+127
16位二進位制原碼表示的整數範圍是-32767~+32767
反碼 對於乙個帶符號的數來說,正數的反碼與其原碼相同,負數的反碼為其原碼除符號位以外的各位按位取反。【例2.14】當機器字長為8位二進位制數時:
x=+1011011 [x]原碼=01011011 [x]反碼=01011011
y=-1011011 [y]原碼=11011011 [y]反碼=10100100
[+1]反碼=00000001 [-1]反碼=11111110
[+127]反碼=01111111 [-127]反碼=10000000
負數的反碼與負數的原碼有很大的區別,反碼通常用作求補碼過程中的中間形式。 反碼表示的整數範圍與原碼相同。
補碼正數的補碼與其原碼相同,負數的補碼為其反碼在最低位加1。
【例2.15】(1)x=+1011011 (2) y=-1011011
(1)根據定義有: [x]原碼=01011011 [x]補碼=01011011
(2) 根據定義有: [y]原碼=11011011 [y]反碼=10100100
[y]補碼=10100101
補碼表示的整數範圍是-2n-1~+(2n-1-1),其中n為機器字長。
則:8位二進位制補碼表示的整數範圍是-128~+127
16位二進位制補碼表示的整數範圍是-32768~+32767
當運算結果超出這個範圍時,就不能正確表示數了,此時稱為溢位。
補碼與真值之間的轉換
正數補碼的真值等於補碼的本身;負數補碼轉換為其真值時,將負數補碼按位求反,末位加1,即可得到該負數補碼對應的真值的絕對值。
【例2.16】[x]補碼=01011001b,[x]補碼=11011001b,分別求其真值x。
(1)[x]補碼代表的數是正數,其真值:
x=+1011001b
=+(1×26+1×24+1×23+1×20)
=+(64+16+8+1)
=+(89)d
(2)[x]補碼代表的數是負數,則真值:
x=-([1011001]求反+1)b
=-(0100110+1)b
=-(0100111)b
=-(1×25+1×22+1×21+1×20)
=-(32+4+2+1)
=-(39)d
移碼:移碼(又叫增碼)是符號位取反的補碼,一般用做浮點數的補碼,引入的目的是為了保證浮點數的機器零為全0。
①移碼的定義:設由1位符號位和n位數值位組成的階碼,則 [x]移=2en + x -2n≤x ≤ 2n
例如: x=+1011 [x]移=11011 符號位「1」表示正號
x=-1011 [x]移=00101 符號位「0」表示負號
②移碼與補碼的關係: [x]移與[x]補的關係是符號位互為相反數(僅符號位不同),
例如: x=+1011 [x]移=11011 [x]補=01011
x=-1011 [x]移=00101 [x]補=10101
考試筆記1
1 配置apache時修改httpd.ini,配置php時修改php.ini 2 賦值 比較的是值 比較的是值和型別3 string 函式函式 描述explode 把字串打散為陣列 strlen 返回字串的長度 strtolower 把字串轉化為小寫字母 strtoupper 把字串轉化為大寫字母 ...
程式設計師考試學習筆記
第一章 計算機系統基礎知識 1.1 計算機系統的基本組成 計算機系統是由硬體系統和軟體系統組成的。計算機硬體 指的是計算機系統中看得見摸得著的物理裝置 計算機軟體 程式 資料和相關文件的集合 1 計算機系統的硬體 基本的硬體系統是由 運算器 控制器 儲存器 輸入裝置 輸出裝置 五大裝置組成。1 cp...
程式設計師考試大綱
一 考試說明 1 考試要求 1 熟練掌握基本演算法和資料結構,用c語言編制程式 2 掌握資料結構 程式語言和作業系統的基礎知識 3 了解軟體工程資料庫 多 和網路的基礎知識 4 掌握數制 機內 及其算術運算和邏輯運算 5 了解計算機的體系結構和主要部件的基礎知識 6 正確閱讀和理解計算機領域的簡單英...