posts - 225, comments - 62, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
貌似C++/C中内存都是一个字节一个字节“倒着”用的
如,整数1,应该为00000000 00000000 00000000 00000001
而在内存中会被这样放 00000001 00000000 00000000 00000000
下面是一个将变量按位输出的程序,就是在写这个程序的时候发现的这个问题
#include <iostream>
using namespace std;

template 
<class T>
void printbybit(const T& ob)
{
    
char *p_e=(char *)&ob;
    
char *p=p_e+sizeof(T)-1;
    
for(;p>=p_e;p--){
        
for(int i=7;i>=0;i--){
            cout
<<(((*p)&(1<<i))?1:0);
        }
    }
}


int main()
{
    
int x;
    x
=65;
    printbybit(x);
    cout.put(
'\n');
    
char ch='A';
    printbybit(ch);
    cout.put(
'\n');
    
double lf=1;
    printbybit(lf);
    cout.put(
'\n');
    system(
"pause");
}

Feedback

# re: C/C++变量的内存使用,将变量按位输出[未登录]  回复  更多评论   

2007-02-10 10:59 by yy
我试验的结果就是高位存高位,低位存低位,没问题

# re: C/C++变量的内存使用,将变量按位输出  回复  更多评论   

2007-09-20 11:17 by BNJ
给个VC++2005的表:
int n=0x600;
watch:
+------+------------+
|name |value |
+------+------------+
|&n |0x004dd67c |
+------+------------+

Memory:
+0x 00 01 02 03 04 05 06 07
0x004dd67c 00 06 00 00 00 00 00 00

# re: C/C++变量的内存使用,将变量按位输出  回复  更多评论   

2011-05-09 15:54 by EVER
不同的机器不一样的。。
大端表示法 和 小端表示法

# You have shed a ray of sunshine into the forum. Thkans!  回复  更多评论   

2011-05-23 06:25 by Jhett
You have shed a ray of sunshine into the forum. Thkans!

# re: C/C++变量的内存使用,将变量按位输出[未登录]  回复  更多评论   

2014-03-27 16:03 by vincent
这个是跟具体的处理器架构有关的,有的计算机是大端(Big-endian)模式,有的计算机是小端(Little-endian)模式。因此会出现lz(小端模式)和下面回复的两种不同的情况。
只有注册用户登录后才能发表评论。