ページ 11

ビットのコピーって出来ますか?

Posted: 2007年5月21日(月) 13:01
by DDR
こんにちは。

int a=2,b;
double c=3.982;
b=a;

こういうデータのコピーをすると、32bitまとめてコピーされてしまいますが、
int型aの3bit目のデータだけ、int型bの6bit目にコピーするとか、
double型の15bit目のデータだけ、int型bの6bit目にコピーするとか、

今回例えばなので、意味がないコピーですが、
こういうことは出来るのでしょうか?

Re:ビットのコピーって出来ますか?

Posted: 2007年5月21日(月) 14:30
by YuO
マスク処理をすれば可能です。
ただし,double型はそのままでは当然できないので,ポインタを経由したキャストが必要になります。

Re:ビットのコピーって出来ますか?

Posted: 2007年5月21日(月) 15:11
by 組木紙織
共用体とビットフィールド使えば出来ると思います。
あんまりよくない例ですが、参考までに。

#include<iostream>
using namespace std;

union A
{
int ch;
struct{
unsigned b: 1;
unsigned c: 1;
unsigned d: 1;
unsigned e: 1;
unsigned f: 1;
unsigned g: 1;
unsigned h: 1;
unsigned i: 1;
}b;
};
int main()
{
A a;

for(int i=0;i<=0xff;i++){
a.ch = i;
cout <<a.b.b<<a.b.c<<a.b.d<<a.b.e<<a.b.f<<a.b.g<<a.b.h<<a.b.i<<endl;
}
return 0;
}