Operators - How To Bitwise Shift In .NET
Sep 13, 2009How do I bitwise shift right/left in VB.NET? Does it even have operators for this, or do I have to use some utility method?
View 4 RepliesHow do I bitwise shift right/left in VB.NET? Does it even have operators for this, or do I have to use some utility method?
View 4 RepliesDid anyone else read this article under Visual Basic News? I thought it was a very bad treatment of the subject. I especially don't like articles like that when the code they post relies on Option Strict Off.
View 12 RepliesAccording to MSDN The And operator can act as a bitwise operator OR a logical operator.The only way to know if it is used as One operator or another is, If it is on the right side of an assignment operation? for example x = 3 AND 5. I cannot find any other instances where the bitwise operator would be used instead of the logical operator, are there?
View 1 RepliesWhen I run this command in PHP, I get:
[Code]...
The interesting thing is, that when I try to shift any number greater than int32 in .net, it yields bad results.. Every number under int32 (2147483647) yields the same results from php and c#.net or vb.net Is there a workaround for this in .net?
I recently installed visual studio 2010 and am using visual basic.The problem I am having is that some operators do not show up within the editor. For example the code line below
test = 3 + 5 - 6 / 7 * 4
only displays
test 3 5 - 6 / 7 * 4
the = + operators are not visible although they are there since the program will work as intended....and if I open up the .vb file in notepad everything is there. It just won't display within Visual Studio.
How to hold shift and then click button a and b (while holding shift)?
View 7 RepliesIn my keydown event handler, when Keys.Numpad4 is pressed with Shift, I get the same keycode code as for Keys.Right. Is this by design? How can I distinguish between the two?
View 5 Repliesresult = SendMessage(buttonhandle, BM_GETSTATE, 0, 0)
buttonChecked = (result = BST_CHECKED)
Now I want to know whether the bit for BST_CHECKED is turned on or not.
How would I do that?
I can do
buttonChecked = (result % 2 = BST_CHECKED)
Is there a better way?
Original Code (VB.net): curStyle = curStyle And (Not ES_NUMBER)
Changed Code (C#):
curStyle = curStyle & (!ES_NUMBER);
But it is giving me this error: Operator '!' cannot be applied to operand of type 'long'ES_NUMBER is of data type long.I tried changing it to int, string, etc. All doesn't work.
I want to perform a bitwise-AND operation in VB.NET, taking a Short (16-bit) variable and ANDing it with '0000000011111111' (thereby retaining only the least-significant byte / 8 least-significant bits).
View 3 RepliesI have an abstract user control(baseModule) that has a property that I plan on using a bitwise comparison on to determine what export types are supported by that module. In the designer of a module derived from baseModule, I am presented with a combobox with the ability to just select a single value (Html, Xml, etc.) I would like to be presented with a drop-down checked listbox so I could select which values I want.How can I accomplish this inside of VS2008? I've seen other properties support this.
Public Class ExportTypes
Public Enum ExportType
Html = 1
Xml = 2[code]......
I'm re-writing some old application in VB.NET to C# and ASP.NET 3.5. Everything is going OK but I have this problem - and, as the database will not be changed, I must find a solution to it.The old app saves the list o desired days (from Sunday to Saturday) in a byte. This is the way it do it:
If chkDaily.Checked Then
daysBitmask = 127 ' This is for a full week
Else
[code]....
m_ArchiveBoolean, m_HiddenBoolean, m_ReadOnlyBoolean, m_IndexedBoolean, m_CompressedBoolean are all form level booleans that's set from their appropriate Checkboxes on the form before this code runs in a BackgroundWorker.
Why is it that this code works:
Try
Dim fi As New FileInfo(element)
With fi
If m_ArchiveBoolean = False Then
[code]....
In this 2nd one attributes are being changed, but they're the wrong ones and I can't pinpoint it right off hand.
Edit: What the overall goal of this is that if the user has the attribute checkbox checked then the file needs to have it set, other wise the attribute (if it's present) needs to be unset.
I am trying to combine three Byte values to one Long value, like System.Drawing.Color.ToArgb() does.
I've looked up reference source code to find it and converted it to VB .NET:
Return CLng((CInt(red) << 16 Or CInt(green) << 8 Or blue Or CInt(alpha) << 24) And -1)
It works fine of course, but I don't really understand why alpha shifted by 24 is last, not first (so it would be in nice order 24, 16, 8). I don't really understand bitwise operations a lot. Also, this code snippet works for 4 bytes, which is redundant for me, I need just three bytes and I wonder if Long is still required when bytes are only three, wouldn't Integer do just fine in this case?
So, my question is, how do I rewrite this code to work with just 3 parameters? Do I need to use Long? And, I know this is silly, but is it possible to make byte shifting in order 16,8,0 instead of 16,8,0,24? It's really just aesthetics, but I am awful perfectionist.
This work nicely
Public Const test As ULong = 1 << 30
This doesn't work nicely
Public Const test As ULong = 1 << 31
[code].....
I have written a simple VB.net application which saves information to an RFID tag. I am now trying to compress my data. The solution I have come up with involves bitwire operation.Basically I store 2 numbers per 1 byte (0-9, 10 being a period, 12 possibly being a negative/positive flag,13,14,15 unused as of yet).The code I am using basically shifts the byte containing a number left, 4 spaces, then 'OR's it against another number.Therefore 12 is now represented as 00010010. The problem i'm having is decompressing. Obviously getting the '1' back is easy, as I just shift right 4, then grab it. I need to append or remove the last 4 bits.My solution after many headaches was to reverse the bit order, shift left 4, then reverse, then tostring it.
View 17 Repliesm_ArchiveBoolean, m_HiddenBoolean, m_ReadOnlyBoolean, m_IndexedBoolean, m_CompressedBoolean are all form level booleans that's set from their appropriate Checkboxes on the form before this code runs in a BackgroundWorker.
Why is it that this code works:
Try
Dim fi As New FileInfo(element)
[code].....
Is it possible to define operators like addition, subtraction and such to classes? I'm trying to convert a vector class from C++
class CVector2
{
public:
float x, y
[Code].....
I want to place the arithmetic operators in an array so I can randomly select one at a time. I am not sure how to declare and initialize them so that I can use them in an equation.
View 11 RepliesWhy aren't the assignment operators (+=, -=, *=, /=) overloadable in VB.NET?
View 1 RepliesAs a learning experience I decided to try and implement the Shunting Yard Algorithm(string calculator) using OOP. It was successful for as far as I took it, but it had one flaw. In order to get the stack to be accessible from the operators I had to declare it as shared, which meant that all versions of the calculator shared one stack. This very short piece of code illustrates what I came up with and the "flaw". [code] How can I maintain the functionality of anOP.add1 without declaring "something" as shared?
View 9 RepliesCan I store the common operators such as '>', '<', '+' etc., in a variable and then use it when required.
[Code]....
so here instead of directly using > and +, Can I use the variables OP1 and OP2 somehow. May be I can put the entire string from "If..... NUM1" in another variable as text string and then execute that variable.
Using 2 objects of the same type, I'm trying to implement < and >, but I can't seem to find any authoritative source on what to do with either or both being Nothing. In other words what the accepted practice or MSDN suggestions are.[code]Accessors is my canonical method for centralizing an enumeration of the properties (all are decimal)return false for both if either is Nothing?I found a comment, but can't seem to verify or validate it that A null object is always less than a non-null object..
View 2 RepliesI have a weird situation. I have a C++ code that overloads the +,-,* operators and exports them in a .DLL file. Now, I want to import those overloaded operators from within VB.NET code. So it should be like this:
<DllImport("StructDLL.dll")> Public Shared Function
Operator +(ByVal a1 As A, ByVal a2 As A) As A
End Function
So what I'm trying to do above it just import the lovely overloaded operator + from the DLL.Note that the operator is already overloaded from inside the DLL, so should I import it as a Function or as an Operator like this?
<DllImport("StructDLL.dll")> Public Shared
Operator +(ByVal a1 As A, ByVal a2 As A) As A
End Operator
The overloaded plus operator is supposed to add structs. So the DLL is programmed to work on structs (C++) and I want to import it in VB.NET to work on Structures.
I have a custom class that simply contains a public variable X.Let's say I have two instances of the class, A and B.If I execute an assignment operator, such as:A = B then I want A.X equal to the VALUE of B.X.But, I'm pretty sure that this will just assign B to the variable A.Assigning pointers, in C++ lingo.I looked in the VB.NET docs, which state that "The operator can be overloaded only as a relational comparison operator, not as an assignment operator."
View 7 Replieshave a complete list of the conversion operators for VB/C# and how they differ?
value as type [C#]
TryCast(value, type) [VB]
Convert.ToXxx(value) [any]
[code]....
But of course just having the list isn't the same as knowing the subtle differences between each one.
In C# you can use the implicit keyword to define an implicit user-defined type conversion operator.In VB.NET you can define a CType conversion operator that will explicitly convert a user-defined type into another type.Is there a way to declare an implicit conversion operator in VB.NET?
View 1 RepliesI'm having the exciting task of finding out about VB.NET's <> and Not operators. Not - I'm assuming by my small use of it - is the functional equivalent of ! in languages such as C# and <> being equivalent of !=.
In VB.NET a common problem is doing Boolean expressions against objects that don't have a reference, it appears. So if we do If Request.QueryString("MyQueryString") <> Nothing Then This will actually fail if the query string doesn't exist. Why, I don't know. The way that it's done by older coders is as follows: If Not Request.QueryString("MyQueryString") Is Nothing Then
And this tends to work. To me they're functionally equivalent though operators tend to do different comparisons dependent on certain factors such as operator precedence, why it doesn't work in this case however, I do not know, and neither have I found any relevant material. I ask this as I'm having to write standards documentation and we're determining the use of either the Not or <>.
I have to perform calculations dynamically in ASP/VB.NET (Possibly SQL Server). Something like this:
Dim var1, var2 as Integer
Dim Optr as string
var1 = 15
var2 = 25
Optr = +
MyResult(var1, var2, Optr)
And MyResult should equal 40. How can I do this?
I have a class that implements an interface. Other objects will get an instance via a method like:
Dim AU1 as IAUC = GetAU(<some GUID>)
Dim AU2 as IAUC = GetAU(<some other GUID>)
What I would like to be able to do is this:If AU1 = AU2..The parts of the class that make up the interface could be equal when the rest of the class is not, and the equality of the interface objects (if you can call them that) is complicated. Several fields have to be compared in odd ways.One option I have is to just add an Equality method to the interface, which would work, but I would rather overload the = and <> operators. As far as I can see, you cannot overload operators as part of an interface, but I was hoping that I had overlooked something.