IOS筆記 計算機中的進製 反碼補碼 和儲存細節

2022-02-21 02:16:18 字數 2051 閱讀 7649

1、計算機中的進製

計算機能夠識別的只有二進位制 0、1

進製就是一種計量的單位

2、常見的進製:

二進位制:逢二進一  用0、1來表示,定義乙個二進位制的數:0b 或者 0b  ,0b1010(2)=10(10)

八進位制:逢八進一  用0-7之間的數字表示,定義乙個八進位制的數:0 開頭

10進製:逢10進一  用0-9之間的數字表示,定義乙個十進位制的數(預設)

16進製制:逢16進一  用0-9表示16進製制中的0-9,用a-f表示16進製制中的10-15

定義乙個16進製制的數,用0x或者0x開頭

3、進製的轉換問題

10--->2 : 除2取餘法,取餘數逆序  (把乙個10進製的數每次除以2,得到餘數)

2---->10: 用二進位制的每一位乘以2的(x)次方,

如果是正整數:x從右至左,從0開始依次增1

如果是實數:  x從小數部分開始,從左至右,x依次增加1

010101110.10101

10-->8:除8取餘,取餘數的逆序

2--->8:取出三位(二級制)合成 1位(8進製) 

01 101 101= 155

8--->2:取出1(8進製)拆成3位(二進位制)

2--->16:取出四位(二進位制)合成 1位(16進製制)

16-->2 :一拆四,取出1位(16進製制)拆成 4位(二進位制)

8--->16:  8---->2---->16:先是1拆3,然後4合一

16-->8 :  16--->2---->8 :先是1拆4,然後3合一

4、原碼、反碼、補碼

為什麼要引入反碼和補碼?

儲存乙個負數,主要還是用來優化計算機的減法運算

原碼:乙個正數的二進位制表示,原碼

整數的原碼、反碼、補碼都是一樣的

反碼:符號位不變,其他位按位(逐位)取反的結果

補碼:反碼+1

00000000 00001010

取反:11111111 11110101

+1   11111111 11110110   -5

5、位運算

& 按位與       口訣:同1為1

| 按位或       口訣:有1為1

~ 按位取反     口訣:1變0,0變1

>>右移位       把乙個數的二進位制位逐位向右移動 a>>1  把a向右移動1位

相當於/2

注意:向右移位,移出的那位刪除,左側補符號位

《左移位       把乙個數的二進位制位逐位向左移動 a<<1  把a向左移動1位

相當於*2

注意:向左移位,有可能會改變乙個數的正負性

向左移位,移出的位被刪除,右側補0

任何數和1進行&操作,相當於取這個數的二進位制的最後一位。

6、變數在記憶體中的儲存細節

int  4個位元組 %d %i

float 4個位元組 %f

double 8個位元組%f

long  8個位元組(64),32位下4個位元組

long long 8個位元組,

7、變數型別的修飾符

short int  2個位元組  %hd  

10000000 00000000     -2(15)(-32768)

-1 00000000 00000001

01111111 11111111      2(15)-1(32767)

long       8個位元組  %ld -2(63) ~ 2(63)-1

long long  8個位元組  %lld

signed int 4個位元組  %d

unsigned int 4個位元組 %u

8、字元型

字元型資料在記憶體中如何儲存的?

字元型單位元組(8位)

字元型儲存過程 ---->整數--->2進製---->記憶體(字元對應的整數可以查詢ascii碼表)

取出字元的過程記憶體---->二進位制--->整數---->查出對應的字元

char ch;

ch='a';    -->97

%d   97

%c   a

字元型和整形可以互相轉換

計算機中的原碼 反碼和補碼計算

計算機中的所有資料都是以資料的補碼形式儲存的 機器碼 這裡涉及到原碼 反碼和補碼的計算如下 1 原碼 在計算機中的機器字長的最高位 最左邊 表示正負,0為正數,1為負數,原碼就是最高位是符號位,其餘位表示數值 絕對值 大小。2 反碼 正數的反碼就是其本身 原碼 不變,而負數的反碼就是在負數原碼的基礎...

計算機中的原碼 反碼和補碼

計算機中的原碼 反碼和補碼 看到這個標題,很多人有話要說了,切!這個東西每一本計算機基礎知識的書中都有介紹的,你還拿出來show什麼嘛!我的原則是你需要就來看一看,懂就不要去理會,倒也不必諷刺兩句,我相信總有需要它的人。當初我看書是沒看明白的,在網上查了好多資料才有所悟。前幾天跟老婆講原碼 反碼和補...

計算機中的原碼 反碼 補碼分析

今天給學生上數字邏輯第一節課,主要講了數制,後面簡單提及了原碼 反碼和補碼,碰到了兩個問題 第一,十進位制數轉八進位制數,學生練習時卡殼,不知道無從下手 第二,原本以為原碼 反碼 補碼應該是一年級甚至中學時就應該解決的問題,實際上原來根本不是這麼回事。中學老師即使講過,估計也是對付考試的方式簡單提及...