ビットマスクにおけるフラグ制御がわかりません。



0   名前: 独立独歩 : 2007/06/06(水) 18:18  ID:/UQCBCoW sub-y9
バイナリフラグを使いたく参考書を開いたのですが、疑問点があります。
ビットマスクの0x8の意味が「01000」と書かれてあり、0x10が「10000」と書かれています。
疑問に思うのはここです、「10000」を表すのであれば、10進を2進で0x16となるのではないのでしょうか?
たぶん、私の解釈が間違っている思うですが、
よろしければビットマスクの正しい使い方をご教授していただけませんでしょうか?下記がソースになります。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>例バイナリフラグの利用</title>
</head>
<body>
<script type="text/javascript">
/// **************************************************************************************************
// *   システム名称 :
// *   概要     : バイナリフラグの利用
// *   作成者    :独立独歩
// *   作成日    :2007/6/6	
// *   JavaScript ver  :ScriptEngineMajorVersion 5.0
// *   Platform    :win2k
// **************************************************************************************************
//<![CDATA[

 var FIELD_A = 0x1; //00001
 var FIELD_B = 0x2; //00010
 var FILED_C = 0x4; //00100
 var FILED_D = 0x8; //01000
 var FILED_E = 0x10; //10000
//var FILED_E = 0x16; //10000 では?
 
 
 
 
 //項目AとCとEに入力があったと過程して
 var filedsSet = FIELD_A |  FILED_C | FILED_E; // 00001 | 00100 | 10000 =>10101
 
  if ((filedsSet & FIELD_A) && (filedsSet & FILED_C)) {

   alert("フィールドAとCがセットされています。");
  }
 
//]]> 
</script>
<p>ここに5つのフィールドがあると過程...</p>
</body>
</html>


【何をしてみたのか】
本を読んだ、ネット検索をした
【検索用語】
JavaScript ビットマスク

【備考】

1   名前: 匿名 : 2007/06/06(水) 18:18  ID:o0rTiuIw sub-Ko
>10進を2進で0x16
これの意味がわかんないのですが

0x00と書いた場合16進ですよね。
2進で10000なら0x10で16(10進)であってるはずですけど。
1 0 0 0 0
16 8  4  2  1(16進の重み)

2   名前: 独立独歩 : 2007/06/06(水) 18:18  ID:jSC9zi.K sub-y9
>>匿名殿
返信ありがとうございます。

>>0x00と書いた場合16進ですよね。
16進だったんですか・・・
10進だと思い込んでおりました。

ですので
>10進を2進で0x16
>これの意味がわかんないのですが
10進の16は10000という意味で書いておりました。

解決です!
ありがとうございました。




一覧へ戻る