嗔秤戻幣�哉膵�云利匈嬉蝕湊蛸賜�塋床四衲���萩晦編報炎嘔囚^泡仟 ̄云利匈�《超噌�殻窟�嵌虜隆輓麈觚翹瀘卉韮�仍仍�。� 烏御危列
浪慕利 卦指云慕朕村 厘議慕尺 厘議慕禰 TXT畠云和墮 序秘慕杏 紗秘慕禰

VB2008貫秘壇欺娼宥(PDF鯉塀哂猟井)-及147嫗

梓囚徒貧圭�鮗� ○ 賜 ★ 辛酔堀貧和鍬匈��梓囚徒貧議 Enter 囚辛指欺云慕朕村匈��梓囚徒貧圭�鮗� ● 辛指欺云匈競何��
!!!!隆堋響頼��紗秘慕禰厮宴和肝写偬堋響��



 S 



                The notion of a left´hand side and a right´hand side as two separate parts is important  

           when you consider this code�此�



           a = a �� 1 



                In the example�察�the variable a is added with the value 1 and assigned to the variable a�察�but  

           these operations do not happen at the same time�察�they happen sequentially。 First�察�the right

           hand side is executed�察�and then the left´hand side is executed。 By executing the left´hand side�察 �

           the existing value of the variable a is overwritten。 

                Let¨s consider another example�此�



           b = a = a �� 1 



                If you were to run this code�察�b would not be assigned�察�because the example has mixed  

           operators�察�which translates to this�此�



           Dim b As Integer = CInt�─��┌�a = ��a �� 1���� 〃 False���� 



                The result is not what you expected�察�and not even close to what you were trying to achieve  

           ��and isn¨t even allowed with Option Strict set to On��。 What this illustrates is that you need to be  

           careful with operators。 



           Bitwise Operators 



           Bitwise operators are used to access and manipulate individual bits in a whole number。  

                As you learned in Chapter 2�察�the puter sees numbers as binary�察�with only two unique  

           identifiers。 Thus�察�whole numbers could be viewed as arrays of Boolean values�察�as there are only  

           two valid values�此�1 and 0 or True and  False。  

                Let¨s look at example of using the bitwise operators。 Say that you want to know whether a  

           person is tall�察�wears hats�察�and runs slowly。 Using Boolean data members�察�you would write the  

           following code。 



           Class PersonWithAttributes  

               Public IsPersonTall As Boolean 

               Public WearsHats As Boolean 

               Public RunsSlowly As Boolean 

           End Class 



                In this definition�察�each attribute of PersonWithAttributes is its own data member。 Another  

           way to achieve the same effect is to consider each attribute as its own binary flag that is encoded  

           into PersonWithAttributes。 The class would be rewritten as follows�此�



           Class PersonWithAttributes  

               Public Attributes As Integer 

           End Class 



                In the rewritten example�察�the Boolean attributes are encoded into the data member  

           Attributes using bitwise operators。  

                To encode a flag in a number means to tweak the individual binary bits of a number。 To  

           access the individual bits�察�you need to create constant numbers that are a power of 2。 We use a  


´´´´´´´´´´´´´´´´´´´´´´Page 441´´´´´´´´´´´´´´´´´´´´´´´

                                CH AP T E R   1 6   *    L E A R N I N G   A B OU T   O TH E R   V IS U AL   B A SI C  T E C HN IQ U E S 419 



power of 2 convention because binary is a counting system based on the power of 2。 Thus�察�the  

three Boolean data members are converted to constants�此�



Const isTall As Integer = 1 

Const wearsHats As Integer = 2 

Const runsSlow As Integer = 4  



     Now you could create a person that is tall and runs slowly�察�like this�此�



Dim person As PersonWithAttributes = New PersonWithAttributes�┌� 

person。Attributes = isTall Or runsSlow 



     The variable person。Attributes is assigned the operations of isTall and runsSlow。 So if  

isTall is 0001�察�and runsSlow is 0100�察�taking the bitwise OR ��Or�� of the two values results in 0101。 

     A bitwise OR is when you pare two values�察�and if either value is nonzero�察�then the  

answer is nonzero。 If you were to convert the binary number into a decimal number�察�you would  

get the value of 5。 You could verify that the person isTall like this�此�



If ��person。Attributes And isTall��  0 Then 

    Console。WriteLine�─�Person is tall;�� 

Else  

    Console。WriteLine�─�Person is not tall;�� 

End If 



     A bitwise shift is the shifting of the bits to the left or to the right by the number of places indi

cated by the shift。 The following code demonstrates shifting the bits two places to the left �─掘�2 



     The result is 2�察�which has the binary value 10。 

     For the most part�察�you probably will not use the binary shift operators。 Unless you are dealing  

with hardware´related programming ��such as GUI interactions���察�whatever you can do with  

flags can be replicated using a bination of Boolean types and structures。 However�察�when  

you do encounter bitwise operators�察�you will recognize what they are doing。  



Modulus 



The modulus operator ��Mod�� is very useful when you want to perform division operations and  

need to know how much is left over。 For example�察�the following calculation yields a value of 3。 



Dim a As Integer = 17 / 5 


´´´´´´´´´´´´´´´´´´´´´´Page 442´´´´´´´´´´´´´´´´´´´´´´´

420       CH AP T E R   1 6   *    L E A R N I N G   A B OU T   O TH E R   V IS U AL   B A SI C  TE C H N IQ U E S 



               Yet because it is an integer division�察�you don¨t know if the value is evenly divided by 5。 The  

          following calculation lets you figure out the remainder for the division。 



          Dim remainder As Integer = 17 Mod 5 



          Increment and Decrement  



          The increment �┌�=�� and decrement �─ �=�� operators are useful in place of the addition and subtrac

          tion operators。 Visual Basic also has the *= and /= operators�察�which you can use in place of the  

          multiplication and division operators。 The idea behind these operators is to perform an operation  

          on the variable itself。 

               Let¨s say you execute this code�此�



          Dim a As Integer = 2 

          a ��= 1 



               Then after the increment operation�察�the variable a will have a value of 3。 



          Overloading Operators 



          Suppose you want to implement a special type�察�such as a plex number type�察�and want to  

          support the �� sign。 To do so�察�you would need to implement the �� operator�察�which�察�in turn�察�over

          loads the �� operator。 

               As an example�察�let¨s walk through implementing the �� operator for the plex number  

          type。 plex numbers are numbers that have two parts�此�real and imaginary。 For example�察�a �� b  

          is a plex number�察�where a is the real part and b is the imaginary part。 To add a plex  

          number�察�you add the real parts�察�and then add the imaginary parts�察�and that gives you the new  

          number。 The following is the plex number type�察�plexType�察�declaration。 



          Public NotInheritable Class plexType 

              Private ReadOnly _imaginary As Double 

              Private ReadOnly _real As Double 



              Public Sub New��ByVal real As Double�察�ByVal imaginary As Double�� 

                  _real = real 

                  _imaginary = imaginary 

              End Sub 



              Public Overrides Function ToString�┌� As String 

                  Return String。Concat��New Object�┌� ��;�─┌察�_real�察 ┌� �─┌察�_imaginary�察 ┌�i;���� 

              End Function 



              Public ReadOnly Property Imaginary�┌� As Double 

                  Get 

                      Return _imaginary 

                  End Get 

              End Property 


´´´´´´´´´´´´´´´´´´´´´´Page 443´´´´´´´´´´´´´´´´´´´´´´´

                               CH AP T E R   1 6   *    L E A R N I N G   A B OU T   O TH E R   V IS U AL   B A SI C  T E
卦指朕村 貧匯匈 和匯匈 指欺競何 壘��0�� 家��0��
隆堋響頼��紗秘慕禰厮宴和肝写偬堋響��
梁椣戻幣�� 梁心弌傍議揖扮窟燕得胎��傍竃徭失議心隈才凪万弌誌育断蛍�輌臆惨軼僑〃�燕慕得珊辛參資誼持蛍才将刮襲潜��範寔亟圻幹慕得 瓜寡追葎娼得辛參資誼寄楚署衛、持蛍才将刮襲潜填��