整数的大小端序-创新互联

在存储整数时,一般按字节为逻辑单位进行存储,有“小端序”和“大端序”之分。小端序(little-endian)
是指将表示整数的低位字节存储在内存地址的低位,高位字节存储在内存地址的高位。如果将整数 1982062410 存储至内存,由于

创新互联建站是一家以网络技术公司,为中小企业提供网站维护、成都做网站、网站制作、成都外贸网站建设、网站备案、服务器租用、域名与空间、软件开发、成都微信小程序等企业互联网相关业务,是一家有着丰富的互联网运营推广经验的科技公司,有着多年的网站建站经验,致力于帮助中小企业在互联网让打出自已的品牌和口碑,让企业在互联网上打开一个面向全国乃至全球的业务窗口:建站联系热线:028-86922220

1982062 4 10 = ( [ 00000001 ] [ 00101110 ] [ 01110000 ] [ 01010000 ] ) 2 19820624_{10}=([00000001][00101110][01110000][01010000])_2 1982062410​=([00000001][00101110][01110000][01010000])2​

利用 C++中的 union 数据结构(或者指针)可以很容易确定计算机使用的是何种端序。

union {unsigned int bytes;
 unsigned char lowerByte;
} block;
int main(int argc, char *argv[])
{// 第一种方式:利用 union 的特性,将 block 的第一个成员赋值为 1,然后获取内存
 // 低位字节的值。如果是小端序,低位字节存储的值为 1;若为大端序,则值为 0。
 block.bytes = 1;
 cout<< (block.lowerByte ? "little-endian" : "big-endian")<< endl;
 // 第二种方式:利用指针直接获取低位字节的值。如果是小端序,低位字节存储的值为 1;
 // 若为大端序,则值为 0。
 unsigned int bytes = 1;
 cout<< (*((char *)(&bytes)) ? "little-endian" : "big-endian")<< endl;
 return 0;
}

强化练习:UVa594 One Little Two Little Three Little EndiansA。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻名称:整数的大小端序-创新互联
文章出自:http://myzitong.com/article/dghgji.html