Dim temp As Byte
temp=&H60
とした場合、変数tempの中身は
01000000
となっているはず。
ここで、tempの先頭から2byteのメモリの内容を知りたいのですが
どうしたらよいのでしょう?
私は、変数のポインタは変数の先頭アドレスを示しているはずだから
tempのポインタを-6シフトさせてGetByteでポインタからデータ
を取り出すと
00000001
になっているはずだとおもって、
Print GetByte(VarPtr(temp)-6) And &H1
こんな事してみたのですが、表示は0
素直に
Print (temp And &H40)/&H40
としたほうがよいのでしょうか?
ポインターについて
Re: ポインターについて
多分、仰りたいのは先頭から2bit目だと思いますが、> Dim temp As Byte
> temp=&H60
> とした場合、変数tempの中身は
> 01000000
> となっているはず。
> ここで、tempの先頭から2byteのメモリの内容を知りたいのですが
> どうしたらよいのでしょう?
どうでしょうか?
あと&H60は二進数では01100000だと思います。
確かにポインタは変数の先頭アドレスを示していますが、> 私は、変数のポインタは変数の先頭アドレスを示しているはずだから
> tempのポインタを-6シフトさせてGetByteでポインタからデータ
> を取り出すと
> 00000001
> になっているはずだとおもって、
> Print GetByte(VarPtr(temp)-6) And &H1
> こんな事してみたのですが、表示は0
変数内の何bit目に0か1が立っているかを調べることには使いません。
何ビット目が0に成っているか1に成っているかを調べるには
ビットマスクかビットシフトを使います。
例えば、問題のように2bit目が0なのか1なのかを調べるには
コード: 全て選択
Dim temp As Byte
temp=&H60
Print (temp<<2)>>8
コード: 全て選択
Dim temp As Byte
temp=&H60
Print (temp and &H40)>>6