ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月28日(日) 06:32

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 2 件の記事 ] 
作成者 メッセージ
 記事の件名: ポインターについて
投稿記事Posted: 2005年11月15日(火) 13:04 
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
としたほうがよいのでしょうか?


通報する
ページトップ
   
投稿記事Posted: 2005年11月15日(火) 16:35 
オフライン

登録日時: 2005年5月31日(火) 10:52
記事: 264
お住まい: 高知
引用:
> Dim temp As Byte
> temp=&H60
> とした場合、変数tempの中身は
> 01000000
> となっているはず。
> ここで、tempの先頭から2byteのメモリの内容を知りたいのですが
> どうしたらよいのでしょう?
多分、仰りたいのは先頭から2bit目だと思いますが、
どうでしょうか?

あと&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
というようにします。


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 2 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: Semrush [Bot] & ゲスト[18人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean