Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2729 / 13645 ツリー ←次へ | 前へ→

【66333】boolean型は2バイトも使って何をしているのか もっさん 10/8/23(月) 21:04 質問[未読]
【66334】Re:boolean型は2バイトも使って何をしてい... kanabun 10/8/23(月) 21:53 発言[未読]
【66336】Re:boolean型は2バイトも使って何をしてい... よろずや 10/8/23(月) 22:08 回答[未読]
【66338】Re:boolean型は2バイトも使って何をしてい... Abyss 10/8/23(月) 22:31 発言[未読]
【66339】Re:boolean型は2バイトも使って何をしてい... Abyss 10/8/23(月) 22:42 発言[未読]
【66341】Re:boolean型は2バイトも使って何をしてい... もっさん 10/8/23(月) 23:40 お礼[未読]

【66333】boolean型は2バイトも使って何をしている...
質問  もっさん  - 10/8/23(月) 21:04 -

引用なし
パスワード
   てっきり1ビットしか使ってないものだと思い多次元配列で
booleanを使っていましたが、lenBで2バイト使ってることを最近知りました。

いったい彼は2バイト使って何をしているのでしょうか?

【66334】Re:boolean型は2バイトも使って何をして...
発言  kanabun  - 10/8/23(月) 21:53 -

引用なし
パスワード
   ▼もっさん さん:
こんにちは。

>いったい彼は2バイト使って何をしているのでしょうか?

ぼくも詳しくはないのですが、
メモリにデータを効率よく置いたり、CPUが一度にやりとりする
単位データ量から、Boolean型でも 2バイトとか、4バイト(Cのばあい)
のもっとも効率的な長さにまとめられてるのかと思います。

ht tp://www.pro.or.jp/~fuji/mybooks/cpro/cpro.4.3.1.html
> メモリとCPU間をデータが動き回りますが、このときに一度に送ることができる
> 単位が16ビット(2バイト)

ht tp://www5f.biglobe.ne.jp/~f-lap/others_7_memory.htm
> 一回に処理する量が4バイトということは,逆に考えると,
> 3バイトとか1バイト単位でCPUにデータが来てもらっては
> 都合が悪いことになります。
> そのため,メモリー上には "4バイト区切り" でデータを置いて,
> CPUは,4バイトを読み込んだら隣の(contiguous と言います)
> 4バイトを読み込みます。データをメモリから取り出す時に,
> CPUが深く考えなくてもよい仕組みになっています。

【66336】Re:boolean型は2バイトも使って何をして...
回答  よろずや  - 10/8/23(月) 22:08 -

引用なし
パスワード
   ▼もっさん さん:
>てっきり1ビットしか使ってないものだと思い多次元配列で
>booleanを使っていましたが、lenBで2バイト使ってることを最近知りました。
>
>いったい彼は2バイト使って何をしているのでしょうか?

VB(A)の論理演算は、実は1ビットではなく16ビット一度に計算します。
A = 3
B = 5
のとき、
C = A Or B の答えは、7 になります。
ビットパターンで書くと、
A = 0000000000000011
B = 0000000000000101
C = 0000000000000111
同様に
D = A And B の答えは、1 になります。
ビットパターンで書くと、
D = 0000000000000001
Boolean として考えると、
False = 0000000000000000
True = Not False ですから、すべてのビットを反転させると、
True = 1111111111111111
これは、整数値として見ると、-1 になります。

【66338】Re:boolean型は2バイトも使って何をして...
発言  Abyss  - 10/8/23(月) 22:31 -

引用なし
パスワード
   >いったい彼は2バイト使って何をしているのでしょうか?

プログラム開発歴史に関係あるのでは?
ちなみにCの
  BOOL     = 4 byte
  BOOLEAN   = 1 byte
  VARIANT_BOOL = 2 byte (VBのBoolean型)

【66339】Re:boolean型は2バイトも使って何をして...
発言  Abyss  - 10/8/23(月) 22:42 -

引用なし
パスワード
   よろずやさんの説明は次のテストでも明らかです。

 dim i as integer
 i = True
 debug.print Hex$(i)

【66341】Re:boolean型は2バイトも使って何をして...
お礼  もっさん  - 10/8/23(月) 23:40 -

引用なし
パスワード
   ▼みなさん:

理解しました ありがとうございます

2729 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free