芯片大小端判别

来源:互联网 发布:数据库建表视频百度云 编辑:程序博客网 时间:2024/06/10 01:17
/* 来一个简单的函数判断芯片的大小端模式*/int n=0x01;if(*(char*)&n)printf("chip is small endian ")elseprintf("chip is big endian")
  1. &n 取得的地址值是 n变量的低地址的值,比如0x01 0x02 来存储值的话,&符号 都从变量的0x01低地址开始 取值。
  2. 其次,大小端的排序是相对于字节来做区分的,所以,强制转化为低地址的单字节变量进行取值。
  3. 那么,如果是小端的话,0x01会被存储到低地址,00被存储在高地址,所以最后得到的值 是 1,大端模式则是零,一般来说,英特尔的芯片都是小端的芯片,所以取值一般都是从低地址取值,如1所说,所以小端在取值效率上,相对很快。

/* ——————–补码反码– —————*/
正数的补码反码原码都是他本身。
负数的补码为反码加一,补码最大的好处在于,芯片中减法计算。

反码的理解 其实从二进制的存储角度去想,最好 理解。
二进制的数的反码加上源码,就是fffff的值,每个位上的值都为1,加上1,那么都为零,刚好向前进一, 其实就是补码就是反码加一,在二进制中, 减去一个数,相当于加上他的补码,所以这就是补码最真实的意义所在,如钟表上的时钟,减去4小时和加上8小时都是指向8点钟。

原创粉丝点击