Chapter2 2.1和2.2節

來源:互聯網
上載者:User

Chapter two   資訊的表示和儲存

 

1、二值訊號是在通訊和計算等方面更容易表示、儲存和傳輸

2、三種重要的數字編碼:無符號/二進位補碼(有符號)/浮點數編碼

3、電腦對於有限位元字編碼來說,結果太大會導致overflow

2.1  資訊儲存

1、computer最小儲存單位byte.每個byte 包括8位,機器級程式程式經常在二、十、十六進位之間轉換。

轉換規則。

  轉換竅門:記16進位ACF對應的10進位值,可以方便轉換16進位和2進位

 

 

而2進位與10進位之間的關係主要是通過mod:

10轉2:

eg.  55變二進位110111

 

55/2==27......1

27/2==13......1

13/2==6.......1

6/2==3........0

3/2==1........1

1/2==0........1 

 

倒序list  110111

 

2轉10:

  Eg.  110111變55

55=2^0+2^1+2^2+2^4+2^5

  =1+2+4+16+32

 

其實也可以這樣記:2^0 2^1  2^2   2^3 2^4  2^5  2^6 2^7 

                 1     2  4     8    16  32   64   128

以後10進位轉2進位就可以用這個表來“湊”數了。


16進位與10進位的轉換類似10進位與2進位。mod

因為無法通過格式化的方法直接在一般的編譯器中實現10進位數字2進位輸出的形式。用C語言按位與可以實現。當然用mod方法也可以。

按位與的特點是,是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1,否則為0

#include <stdio.h>int main(void){const int iTimes=sizeof(int) * 8;int iMask=1;int x = 12345; //這個就是要轉換的數int x2[iTimes];int i;for( i=0 ; i<iTimes ; i++ ){x2[i]=x & iMask;iMask = iMask << 1; //printf("%d\n",iMask);}printf("\n(%d)d=",x);for( i=iTimes -1 ; i >=0 ; i-- ){printf("%d",x2[i] ? 1 : 0 );}return 0;}

結果:

 

2、  
大端法:機器按照從最高有效位元組到最低有效位元組的順序儲存

      小端法:機器按照從最低有效位元組到最高有效位元組的順序儲存

例:在字ox01234567中,高位元組的十六進位值為OX01,低位位元組值OX67

位元組的儲存順序最終取決於機器本身。大多數情況下不用考慮這些的。

但是當遇到大小端機器互傳資料、檢查機器級程式、編寫規避正常類型系統的程式時才會用到大小端。。。。。

 

下面是規避正常類型系統程式碼:

#include <iostream>#include<stdio.h>#include<string.h>using namespace std;void show_bytes(char * start,int len){    int i;    for(i=0;i<len;i++)    {        printf("%.2x",start[i]);    }    printf("\n");}void show_int(int x){    show_bytes((char *)&x,sizeof(int));}void show_float(float x){    show_bytes((char *)&x,sizeof(float));}void show_pointer(void *x){    show_bytes((char*)&x,sizeof(void *));}int main(){    //char *a;    //cin>>a;    //int k=strlen(a);     show_bytes("abc",3);     cout<<endl<<endl;     show_int(65);     cout<<endl<<endl;     show_float(65);     //show_pointer();    return 0;}

結果:

 

明天再分析、。。。。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.