关闭

内存高低位存储简介

标签: cpuc内存数据存储
1869人阅读 评论(0) 收藏 举报
分类:

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

	//判断当前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
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:49819次
    • 积分:689
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:3篇
    • 译文:0篇
    • 评论:9条
    文章分类
    最新评论