内存高低位存储简介

不考虑数据符号位的情况下:

	//判断当前CPU是低位还是高位存储
	union
	{ 
		unsigned long int i; 
		unsigned char s[4]; 
	}c;
	c.i = 0x12345678; 
	if( 0x12 == c.s[0] )
	{
		cout << "高位存储" << endl;
	}
	else
	{
		cout << "低位存储" << endl;
	}


	/*
	
	以0x12345678为例:

		Big Endian
		低地址                              高地址
		----------------------------------------->
		+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
		|   12   |   34  |   56   |   78    |
		+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
		Little Endian

		低地址                              高地址
		----------------------------------------->
		+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
		|   78   |   56  |   34   |   12    |
		+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	
	*/

	unsigned long lVal = 0x12345678; 
	
	// 左移, 去掉前两位,后面补0
	cout << (lVal << 8) << endl;  
	cout << 0x34567800 << endl;

	// 右移, 去掉后两位,前面补0
	cout << (lVal >> 8) << endl;
	cout << 0x00123456 << endl;

	//取lVal的 0x0034
	cout << 0x0034 << endl;
	cout << ((lVal<<8)>>24) << endl;   
	
	// 1. lVal << 8  =   0x34567800 
	// 2. 0x34567800 >> 24 = 0x34  也就等于 0x0034


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值