VisualBasic 2005における論理積の処理について

このQ&Aのポイント
  • VisualBasic 2005にてプログラミングの学習を行っています。質問させていただきます。
  • 「And &HFFFFFFFFL」による論理積の処理について、理解できていません。
  • 変数「lFlg」にはなぜ128が入っているのか、教えてください。
回答を見る
  • ベストアンサー

VisualBasic 2005 にてプログラミングの学習を行っている

VisualBasic 2005 にてプログラミングの学習を行っているのですが、 疑問があるので質問させて頂きました。 以下のようなコードで 1 Dim aa As Integer 2 Dim lFlg As Long 3 aa = &H80I 4 Label1.Text = aa.ToString 5 lFlg = aa And &HFFFFFFFFL 6 Label2.Text = aa.ToString 5行目の「And &HFFFFFFFFL」にて論理積を求めているかと思うのですが、 何故このような処理が必要であるかが、分かりません。 仮に「And &HFFFFFFFFL」の記述が無くても変数「lFlg」には128が入って いました。 理由が分かる方がいらっしゃれば教えてもらえると助かります。 以上です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

 記載されたコードの範囲ではとくに意図があるようには思えませんが、おそらく、aaの値を符号付き整数型の値としてではなく、aaのビット並びをそのまま収めた値としてIFlgに代入したいのでしょう。  コードのようにaaの値の符号が正の場合は変わりませんが、負の場合にはそのまま代入するとIFlgの上位32bitにはB'1'が埋まった状態になります。符号付き整数としての値は等しいのですが、ビット並びが違ってきます。  これを、aaのビット並びそのままの場合の正の数(あるいは符号なしの整数)として取り出すにはコードのような論理積を行います。

関連するQ&A

  • VisualBasic 2005 にてプログラミングの学習をしています

    VisualBasic 2005 にてプログラミングの学習をしています。 以下のようなコードを見かけたのですが、いったいどんな値が代入されるのか 分かりませんでした。自宅に環境が動作させる無いので、どなたか分かる方が いらっしゃればと思い、質問させて頂きます。 <抜粋> Dim hensu1 As Long Dim hensu2 As Long hensu1 = &H40S hensu2 = &H1S

  • VisualBasic 2005 にてプログラミングの学習をしていて、

    VisualBasic 2005 にてプログラミングの学習をしていて、疑問に思った点がありましたので質問させて頂きました。 Form1とForm2を作成しています。 その時にForm2を非表示で起動したいと考えた(Form2_Loadイベントを実行したい)のですが、 Form2を非表示で起動させる事が出来ません。 <Form1側 Button1_Click> 'モーダル表示 Dim frm2 As New Form2 frm2.ShowDialog() <Form2_Load> '非表示 Me.Visible = False 上記コードだと、Form2が表示されてしまいます。 これを非表示でLoadイベントを実行させる方法をご存知の方がいらっしゃれば教えて頂きたい と思います。 初歩的な質問で申し訳ないのですが、よろしくお願いいたします。

  • VisualBasic.NETでのソースの意味がわかりません…。

    Dim misscount As Integer Dim istypemode As Boolean Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim s() As String = New String() {"datemasamune", "sanadayukimura", "tyousokabemototika", "morning", "hyper", "newspaper"} Dim word As String = s(New Random().Next(0, s.GetUpperBound(0) + 1)) Label1.Text = word Label2.Text = "" istypemode = True End Sub Private Sub Form1_keypress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress If istypemode And Not Char.IsControl(e.KeyChar) Then If e.KeyChar = Label1.Text.Chars(Label2.Text.Length) Then Label2.Text &= e.KeyChar End If End If End Sub ------------- 以上のソースがあるのですが、どこでどうなっているというのを教えてほしいです。 もし意味不明な部分とかありましたら教えてください。

  • VisualBasic2010 関数の呼び出し

    VisualBasic2010を利用してシステム開発を行っているのですが、 特定の条件に従いFUNCTIONを呼び出したいと考えております。 呼び出すFUNCTIONが多数存在するため、FUNCTION名を変数で 保持しておき、呼出し時にその変数を利用して呼び出せないかと 思案しております。  ★呼出し側 Dim wk as integer   wk = TEST_A()   wk = TEST_B()  ※上記の「TEST_A()」「TEST_B()」を変数を利用して   wk = HENSU()のように呼び出せないかと考えております。 Private Function TEST_A() As Integer Return 0 End Function Private Function TEST_B() As Integer Return 1 End Function 分る方がいらっしゃいましたらご教授頂けますと幸いです。

  • プログラミングVisual Basicの質問です。

    任意の数字を入力し、Len関数とMid関数を使って2進数を10進数に変換するというプログラムを作っているのですが、うまくいきません。 コードは Dim a  As Integer Dim b  As Integer Dim i  As Integer a = Val(TextBox1.Text) For i = Len(a) To 1 Step -1 If Mid(a, Len(a), 1) = "1" Then b += 2 ^ (i - 1) End If Next Label3.Text = b    End Sub 上記のものが作ったコードです。 問題点の指摘をよろしくお願いします。

  • VBのデータグリッドビューで分析

    はじめまして。 学生でVBを使用しているのですが、どうしても分からない所があるので教えてください。 言葉足らずな部分があると思いますが、よろしくお願いします。 VisualBasic2010を使用しています。 私が作成したい機能は、 1、テキストボックスとコンボボックスで必要な情報を記入・選択 2、登録ボタンを押して登録 3、登録した内容がデータグリッドビューに表示される(削除・変更も可能) 4、分析ボタンを押すとコンボボックスの内容の数をかぞえる 私がつまずいている部分は4の「分析機能」です。 分析を押すと、数は表示されるようになりましたが 全て「0」が表示されてしまいます。 データグリッドビューの内容を検索して数をかぞえる方法が分からなくて 困っています・・。 つまずいている部分のコードを載せておきます。 どうぞお力を貸してください。 ---------------------------------------------------------- Private Sub bunnseki_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bunnseki_Button.Click '数の宣言 Dim ACount As Double = 0 Dim BCount As Double = 0 Dim CCount As Double = 0 Dim DCount As Double = 0 Dim FCount As Double = 0 '個数をカウント For i As Integer = 0 To listTask.Count - 1 'オブジェクトを取り出す Dim selectedTask As Task = listTask(DataGridViewTask.Rows(i).Index) 'タスクデータを取り出す selectedTask.GetData(TextBox.Text, A_ComboBox.Text, B_ComboBox.Text) If A_ComboBox.Text = "A" Then ACount += 1 ElseIf A_ComboBox.Text = "B" Then BCount += 1 ElseIf A_ComboBox.Text = "C" Then CCount += 1 ElseIf A_ComboBox.Text = "D" Then DCount += 1 ElseIf A_ComboBox.Text = "F" Then FCount += 1 End If Next '項目の数を表示 A_Label.Text = ACount.ToString B_Label.Text = BCount.ToString C_Label.Text = CCount.ToString D_Label.Text = DCount.ToString F_Label.Text = FCount.ToString End Sub

  • visual basicのプログラミングについて

    体重が標準体重の0.9倍以下の時は痩せすぎ、0.9倍を超えて、1.1倍以下の時は標準、1.1倍を超えた時は太りすぎと表示したいんですけど、できないんです。 Dim sintyo, taiju, hyojun As Integer sintyo = Val(TextBox1.Text) taiju = Val(TextBox2.Text) hyojun = (sintyo - 100) * 0.9 Label5.Text = hyojun Select Case taiju Case taiju <= hyojun * 0.9 Label6.Text = "やせ過ぎ" Case hyojun * 0.9 < taiju <= hyojun * 1.1 Label6.Text = "標準" Case hyojun * 1.1 < taiju Label6.Text = "太り過ぎ" End Select 自分でこう入力したんですけど、label6が変化しません。わかる人がいたら至急回答お願いします。

  • 1+(1+2)+(1+2+3)....+(1+2+...+N)の計算式をVBで・・

    表すにはどうしたらいいでしょうか。 もう3時間くらい格闘しているのですが、 答えを出せません。 Dim S AS LONG DIm N As Integer Dim i As Integer N = Val(TextBox1.Text) S = 0 i = 1 For i = 1 To N Step 1 S = S + i Next Label4.Text = Format(S, "#,##0") で、1+2+3+...+Nはいけるのですが、 上記の式は、Nが1づつ増えていくにしたがって、 Sの値が1 4 10 20 ...となっていくために、…。 どなたか、回答していただける方がおりましたら、 非常に助かります。 よろしくお願いいたします。。

  • プログラミング初心者です。お世話になります。

    プログラミング初心者です。お世話になります。 作成しているアプリケーションからExcelファイルを開き、アクティブなセルのアドレスを、フォーム上のラベルに表示したいのですが、うまくいきません。 シートを表示させるところまではできました(下記サイトをまるまる参考にしました) <http://www.atmarkit.co.jp/fdotnet/dotnettips/717excelfile/excelfile.html> 下記のように、A1の中身を表示させることはできたのですが、アクティブなセルのアドレスを表示させることができません。CellsのところをActiveCellにしたり、いろいろ試したのですが、だめでした。 Dim sCellVal As String Dim rng As Excel.Range ' Range オブジェクト rng = DirectCast(oSheet.Cells(1, 1), Excel.Range) sCellVal = rng.Text.ToString() ' A1セルの内容 Label1.Text=sCellVal どのようにすればよいでしょうか??

  • プログラミングvbについて質問

    vb2012です。たとえば dim D as double D=1/3 label1.text=D としたときに、label1のテキストが0.333333333333333らへんで止まってしまうのですが、これはどうすればいいでしょうか。

専門家に質問してみよう