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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
DDR

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

#1

投稿記事 by DDR » 18年前

こんにちは。

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

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

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

YuO

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

#2

投稿記事 by YuO » 18年前

マスク処理をすれば可能です。
ただし,double型はそのままでは当然できないので,ポインタを経由したキャストが必要になります。

組木紙織

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

#3

投稿記事 by 組木紙織 » 18年前

共用体とビットフィールド使えば出来ると思います。
あんまりよくない例ですが、参考までに。

#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;
}

閉鎖

“C言語何でも質問掲示板” へ戻る