■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#1660-2ビットシフトの方法匿名16602002-07-13(土) 03:15
     #1662-2RE#1660:ビットシフトの方法GOD2002-07-13(土) 07:48
     #1663-2RE#1662:ビットシフトの方法Say2002-07-13(土) 08:08
     #1682-2RE#1660:ビットシフトの方法匿名16822002-07-14(日) 08:05
#1660-2
ビットシフトの方法
ビットシフトをするための基本的な方法はわかっているのですが、
符号拡張にも対応したビットシフト

例:
-1>>4=268435455

の方法がわかりません。演算子に与える変数は、
どちらもLong型にしたいと思っています。
どなたか実現する方法を教えていただけないでしょうか。
#1662-2
RE#1660:ビットシフトの方法
> 例:
> -1>>4=268435455
> 
シフトはVBの嫌な点ですね。
C言語だと演算子が用意されているのですがとVBだと自分で計算しなければな
らないのですから...それとも私がシフト演算子を知らないだけかも(^^;
掛け算(左シフト)、割り算(右シフト)は処理スピードが遅いのでVBの処理速
度が遅いといわれる点の一つかと思います。
とりあえずサンプルコートを2つのせておきます。
両方とも右シフトなので左シフトはご自分で作成してみてください。
こういうルーチンを考えるのは楽しいですよ。(^^)

'いいかげんなやつ
Private Sub Command1_Click()
  Dim DmyLong As Long
  Dim DmyStr As String
  Dim ShiftNum As Long

  DmyLong = -1
  Debug.Print "元=" & Hex(DmyLong)
  ShiftNum = 4
  DmyStr = Hex(DmyLong)
  DmyStr = Right(DmyStr, Len(DmyStr) - (ShiftNum \ 4))
  DmyLong = "&H" & DmyStr
  Debug.Print "後=" & Hex(DmyLong)
End Sub

'割とまとも
Private Sub Command2_Click()
  Dim DmyLong As Long
  Dim DmyCur As Currency
  Dim ShiftNum As Long

  DmyLong = -1
  Debug.Print "元=" & Hex(DmyLong)
  ShiftNum = 4
  DmyCur = DmyLong
  If DmyCur < 0 Then
    DmyCur = 4294967296# + DmyCur
  End If
  DmyCur = Fix(DmyCur / (2 ^ ShiftNum))
  DmyLong = DmyCur
  Debug.Print "後=" & Hex(DmyLong)
End Sub
#1663-2
RE#1662:ビットシフトの方法
C/C++でDLLを作る、という手もあります。
#1682-2
RE#1660:ビットシフトの方法
お二人とも、ありがとうございました。とりあえず今回は、
GODさんの方法を採らせていただくことにいたしました。
右シフトも考えてみたいと思います。
このページと関連する記事:
#2801-1論理・算術シフト2002-09-06(金) 09:24
#6799-0ビット計算2000-03-21(火) 06:00
#36113-0ビットシフトについて2000-12-27(水) 14:03
#41518-0左右シフトの判別2001-04-10(火) 17:22
#10302-08ビットの数値をシフトする方法1999-11-25(木) 08:18
#816-2データ型について2001-11-01(木) 01:46
#21485-0クリックした点を結んでできた多角形の面積の求め方2001-06-21(木) 18:56
#2492-0ビットシフトは出来ますか?1999-08-02(月) 23:10
#18404-0SHFileOperation のキャンセル2000-03-23(木) 16:27
#11839-0シフト演算子について1999-12-16(木) 16:00
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)