2進数の型宣言のしかたとその変数の参照のさせかたは? – プログラミング – Home

2進数の型宣言のしかたとその変数の参照...
 
通知
すべてクリア

2進数の型宣言のしかたとその変数の参照のさせかたは?


あら
 あら
(@あら)
ゲスト
結合: 22年前
投稿: 8
Topic starter  

VC++6のユーザーです。
変数のバリエーションは0か1かの2通りしかないので、
int型でなく、もっと効率よくしたいのです。


引用解決済
トピックタグ
まきじ
 まきじ
(@まきじ)
ゲスト
結合: 20年前
投稿: 35
 

ビットフィールドとか如何でしょうか?

struct hoge{
int x:1;
}


返信引用
まきじ
 まきじ
(@まきじ)
ゲスト
結合: 20年前
投稿: 35
 

int は unsigned int の間違いです。


返信引用
ryo
 ryo
(@ryo)
ゲスト
結合: 23年前
投稿: 252
 

効率が良いとは何を指してるんでしょう?


返信引用
KING・王
 KING・王
(@KING・王)
ゲスト
結合: 20年前
投稿: 122
 

処理の効率なら、一般的にint型の方が処理効率がよいはずですが。
char型を使用するというのは?


返信引用
reshia
 reshia
(@reshia)
ゲスト
結合: 20年前
投稿: 117
 

>変数のバリエーションは0か1かの2通りしかないので、
>int型でなく、もっと効率よくしたいのです。
結局、プログラムをコンパイルしたら、2進数データです。
ソース上でだけ、10進あるいは16進、8進に見えるだけです。
コンパイルしちゃえば、後は同じです。

それに、型を変えて、処理速度を早くしても大したことないと思います。
それよりもアルゴリズムを改良するとか、無駄な処理を省くとか
そちらを気にしたほうがいいです。

あ、それとも。
「0か1」って、true/falseのことなんだとしたら、
C++には、true/falseが使えるbool型があります。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

int に 0 / 1 を入れると、1ビットしか要らないところで32ビット食うのが無駄と言
うことか。
ビットフィールドにしても、32ビット(31ビットはパディング)消費されると思わ
れる。
どうせ32ビット使うなら、32個の 0 / 1 を保持させれば、効率はいい。
以上、スレ主の意図推測。

ひとつは、int 型のまま扱う方法。Win32 SDK ではこの方法。
複数のフラグを OR 演算して使う。
もうひとつは、32個のメンバを持つビットフィールドにする方法。
どちらを選ぶかはお好みで。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

ビットフィールドは処理効率とか可搬性とか低い可能性が高く、
処理効率は unsigned int が最も良いことが多そうな。

C++言語標準だと、
・std::bitset
・std::vector<bool>
このあたりの用法やまわりの評価を調べてみると、いろいろな意味で参考になるかも(w


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

『効率』という言葉が何をさしているかわからないが、
メモリ領域の効率のことなのであれば、シャノンさんの言うとおり、
スピード的効率のことであれば、KING・王さんの言うとおり、

個人的には質問の仕方からいって、
どちらにせよそこまで切り詰める必要はないのではないかと憶測するので、
reshia さんのいうとおり bool を使うべきではないかと思ったりする。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました