C语言积累

来源:互联网 发布:淘宝看店宝插件下载 编辑:程序博客网 时间:2024/06/05 09:08

1.大端小端区分

大小端模式就是存储数据时,数据的高低位怎么存储在地址的高低位上。(位指的是bit,一个char类型数据有8位)

大端模式:数据的高位,存放在地址的低位。(高位存低位,低位存高位)

小端模式:数据的高位,存放在地址的高位。(高位存高位,低位存低位)

我们的pc机一般都是小端模式,个人感觉这也更符合我们的习惯,在地位置的就是低位数据


(1) 位移方法判断

#include <stdio.h>
#define BigorLittle(k) (((k) >> 8) ? (printf("Big!\n")):(printf("Little!\n")))

int main(int argc, char * argv[])
{
  unsigned short a = 2;
  BigorLittle(a);
  return 0;
}


如果1存放在高位,右移8位后1还是存在的;如果1存放在低位,右移8位后1将被移出数据,所以不存,结果为0。

地址:  高地址   <<======  低地址         

小端模式存放:0000 0001      >> 8      ==    0000 0000

大端模式存放:1000 0000      >> 8      ==    0000 1000 


(2) 数据类型强制转换

a = 1 ,变成二进制为:0000 0001.强转为char时,保留unsigned short a变量的低8位。所以这样就更加明了了。因为1低位数据,如果char c不为0,表明1存放在低位,即是小端模式;如果char c变量为0,表明1存放在高位,即是大端模式

#include<stdio.h>
int main(void)
{
  unsigned short a=1;
  char c;
  c = (char)a;
  (c)?(printf("Little!\n")):(printf("Big!\n"));
  return 0;
}







原创粉丝点击