C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: bitにしたい


(過去ログ 36 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■18195 / inTopicNo.1)  bitにしたい
  
□投稿者/ 田中 (4回)-(2008/05/10(Sat) 13:54:08)

分類:[C#] 

始めまして。質問させていただきます。
開発環境はC#の.NET2005です。

今、byte型の値をbitにして各値を見たいと思っています

具体的に何がしたいかというと

byte value = 5;
とした場合bitにして
「101」
とした上で
bit[0] == 1 or 0
bit[1] == 1 or 0
bit[2] == 1 or 0
という風にbyte型の値一つで
三つの判定を行いたいと思っています。
こういうことがC#でできると聞いたのですが、やり方がわからず
こういう事ができると教えてくださった人も他の言語ではやったことが
あるらしいのですがC#だとどういう風にしたらいいかわからないとの事で困っています。
どなたかもし知っていればどうか宜しくご教授お願いします。







引用返信 編集キー/
■18197 / inTopicNo.2)  Re[1]: bitにしたい
□投稿者/ ネタ好き (221回)-(2008/05/10(Sat) 14:14:52)
2008/05/10(Sat) 14:19:47 編集(投稿者)

No18195 (田中 さん) に返信
ビット値を見たいだけならばbyte型をそのままにして見れます。
方法は簡単なビット論理演算です。

//0000 1111 AND 0000 1000 = 0000 1000
byte date = 15;
int foo = date & 0x08; //見たい位置を1にする。
if ( foo == 8 ) Console.WriteLine( "1" );
else Console.WriteLine( "0" );

date = 7;
foo = date & 0x08; //見たい位置を1にする。
if ( foo == 8 ) Console.WriteLine( "1" );
else Console.WriteLine( "0" );

で点検したいビットを判別できます。
引用返信 編集キー/
■18200 / inTopicNo.3)  Re[1]: bitにしたい
□投稿者/ シャノン (398回)-(2008/05/10(Sat) 15:46:21)
No18195 (田中 さん) に返信

BitVector32なんてのも。
引用返信 編集キー/
■18201 / inTopicNo.4)  Re[2]: bitにしたい
□投稿者/ やじゅ (352回)-(2008/05/10(Sat) 15:49:05)
やじゅ さんの Web サイト
> ■No18195 (田中 さん) に返信

それなら、ビットフィールド列挙型を使うといいですよ
「C# ビットフィールド列挙型」で検索してみてください。

http://archive.mag2.com/0000141533/20051017070000000.html
http://msdn.microsoft.com/ja-jp/library/6e3t9w21(VS.80).aspx

例
[Flags]
public enum FontStyle {
    Regular   = 0,
    Bold      = 1,
    Italic    = 2,
    Underline = 4
    Strikeout = 8,
}

引用返信 編集キー/
■18202 / inTopicNo.5)  Re[2]: bitにしたい
□投稿者/ 出水 (51回)-(2008/05/10(Sat) 16:03:38)
適当に組んでみたけど、こんな感じ?
bool BitChk(int src, int bit){
 if ((src & (1 << bit)) != 0) return true; else return false;
}

引用返信 編集キー/
■18204 / inTopicNo.6)  Re[2]: bitにしたい
□投稿者/ Azulean (103回)-(2008/05/10(Sat) 21:59:21)
2008/05/10(Sat) 22:01:56 編集(投稿者)

> BitVector32なんてのも。
コンストラクタに渡せば一発で楽ちんですね。
BitVector32型の変数に対して[ ]でアクセスできるし。
http://msdn.microsoft.com/ja-jp/library/system.collections.specialized.bitvector32.aspx
http://msdn.microsoft.com/ja-jp/library/2zxz5d6h.aspx

ただ、別の変数を作りたくないのであればシフト演算子や論理積ということにならざる得ません。
引用返信 編集キー/
■18290 / inTopicNo.7)  Re[3]: bitにしたい
□投稿者/ 田中 (5回)-(2008/05/12(Mon) 19:37:52)
2008/05/12(Mon) 19:39:21 編集(投稿者)
2008/05/12(Mon) 19:39:15 編集(投稿者)

bitにするには何か特別な事をして、substringかなにかで一つずつ区切って
1か0かを判定するのかと思っていましたが
思っていたものとは全然違っていました。
まだまだ勉強不足でした。

これをつかって開発のほう進めていきたいと思います。
皆さん有難うございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -