程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 計算機字節的大小端判斷,計算機字節大小

計算機字節的大小端判斷,計算機字節大小

編輯:關於C語言

計算機字節的大小端判斷,計算機字節大小


最近在學習微機接口技術和網絡編程基礎,在這兩門學科裡都提到計算機字節的大小端判斷問題

什麼是大小端呢?

如果在連續的兩個地址空a,a+1面存入一個占用這兩個空間的整數。以十六位數為例 0x0102   如果a裡面是01 則說明是大端存儲  如果a裡面是02則說明是小端存儲

c語言代碼:

#include <stdio.h>
union {
  short num;
  char num1[sizeof(short)];
} un;

int main(int argc,char **argv)

{
  un.num = 0x0102;
  if (sizeof(short)==2)
  {
    if(un.num1[0] == 1 && un.num1[1] == 2)
      printf("big-endian");
    else if(un.num1[0] == 2 && un.num1[1] == 1)
        printf("little-andian");
      else
        printf("erro!");
  }
  else
    printf("erro!");

return 0;

}

匯編代碼實現:

include io32.inc
.data
  msg1 byte 'big-endian',13,10,0
  msg2 byte 'little-endian',13,10,0

  num word 1234h
.code
start:
  xor ebx,ebx
  mov bl,byte ptr num
              ;mov eax,ebx
              ;call dispuid
  cmp bl,12h
  je loop1
  mov eax,offset msg2

  jmp loop2

  loop1:
  mov eax,offset msg1
  loop2:
  call dispmsg

  exit 0
end start

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved