Implementing Two's Complement On Unsigned Integer Types?
Jun 24, 2011How can I implement a two's complement in VB.NET using unsigned integer types such as Byte, UShort, UInteger and ULong? Can I cast a UInteger to an Integer?
View 1 RepliesHow can I implement a two's complement in VB.NET using unsigned integer types such as Byte, UShort, UInteger and ULong? Can I cast a UInteger to an Integer?
View 1 RepliesMSDN: Int32 values are represented in 31 bits, with the thirty-second bit used as a sign bit. Positive values are represented by using sign-and-magnitude representation. Negative values are in two's complement representation. Isn't it true that the representation of positive values using sign-and-magnitude system is identical to the representation of positive values using two's complement system? So shouldn't it have been rewritten as: "Int32 values (regardless of positive or negative) are represented in two's complement representation",
View 1 Repliesi want to use an unsigned 32 bit integer. According to [URL]the rage of that type is
UInteger
UInt32
4 bytes
0 through 4,294,967,295 (unsigned)
[code].....
I'm new to VB.Net. I'm using a library call setInstance(ByVal instance As UInteger) in my VB.Net code. The parameter I need to pass is an Integer. Is there anything I need to do to convert the integer parameter to an unsigned integer? The number is garunteed to be positive and less than 10.
View 3 RepliesI have an application that deals with some rather large number values. I wanted the values to allow a roll over so I compiled the program with Remove Integer Overflow Checks turned on. The 32 bit numbers roll over just fine but the 64 bit unsigned integers still throw an over flow exception. Is this a bug in the compiler?
View 7 RepliesI need to parse a binary stream in .NET to convert a 16 byte unsigned integer. I would like to use the BinaryReader.ReadUIntXX() functions but there isn't a BinaryReader.ReadUInt128() function available. I assume I will have to roll my own function using the ReadByte function and build an array but I don't know if this is the most efficient method?
View 3 RepliesI have been trying to compute the checksum for a line of hex code. This is to create a hex file which will be loaded onto an embedded micro.Some of you guys may not know how this is done so very briefly:
a line of hex bytes:
: 10 01 00 00 21 46 01 36 01 21 47 01 36 00 7E FE 09 D2 19 01 40
The underlined bytes are taken and summed. (in this case the decimal 960). and the bold is the checksum Only the 8LSB (or single least significant byte) is needed to compute the checksum... which in this case, 960 = 03C0 in hex, so only C0 is needed.Two's complement is then taken:
step 1) logical not of C0 which is
step 2) add one (integer)
BIN...........DEC...HEX
[code]....
So here is the code I have been using: (quick mention that in the string passed, the hex bytes are all grouped together, there are no space characters)
Public Sub CreateLine(ByVal Data As String)
'Dim BDataArray(DataLength) As Byte
Dim IDataArray(Data.Length) As Integer
[code]....
where i get into trouble is where i commented 'i get into trouble'. My code works, but it's rather crude Now, in that line i first convert the hex value (string) "SChecksum" into an integer. I want to NOT this, so I get my step 2 from my explanation. However, the results appears to be a signed logical NOT. which gives me the wrong answer. My hashed togther version simply subtracts 256 before the not, in order to give me the correct answer.
Basically, I would love for someone to chime in and point out the flaws in my function, and push me towards figuring out the 'proper' way of doing this. Also I can't quite wrap my head around what would happen in the case a string were passed to my function that is over 16 bits, but I imagine I would have to subtract a larger value than 256, before doing the NOT in this case?(whilst we're on the subject of functions, I've used a 'sub', in which case should I used a sub, and which case should I use a function?).
ive got some simple problem i cant understand how to solve.
str(1) is an array and integer(or double, tried both)
a(1) is an array and integer (or double, tried both)
a(1) = a(1) + 1
Label1.Text = str(1) + a
the big part is where i get: operator '+' is not defined for types 'integer' and '1-dimensional array of integer'.why do i get that message and what does it mean? how do i make the code do what i want?
this is for a BINGO game final project that I already turned in but this just bugged me that I could not get the sorting figured out. I am trying to get this to sort the random numbers in to columns under the correct letters but I keep getting the error Operator '>=' is not defined for types '1-dimensional array of Integer' and 'Integer' under the line:
[Code]...
This is giving me a headache. I have this link query here that grabs an ID
Dim mclassID = From x In db.SchoolClasses Where x.VisitDateID = _visitdateID Select x.ClassID And then later on I have this linq query
ViewData("Staff") = From t In db.Staffs Where t.ClassID = mclassID Select t
I've tried quite a few things but to no avail. I've attempted casting, converting, Is operand, etc.
I am trying to design a table type structure that contains rows and cells. I intend the cell class to have a value property. I'm trying to work out how I can create a value that can return some defined different types e.g integer, single, date, string. I'd like the cell value to be strongly typed, but I am unsure how best to get this working.
My thinking in code so far:
Public Class Cell
Private _value as object
Public Property Value as Object // How can I define this so that it return a Type
Get // e.g. integer, string, etc
Return _value
[Code] .....
Is there a way to use a generic that only accepts integer types?
I have a Clamp(value, min, max) function, and it would be nice if it could accept ints, uints, floats, shorts, ect without having to write an individual function for each type.
I have a value of: "2.54334881002458E-37" and i keep getting "overflow" exception when i'm using a double.what should i use to make this work?
code snippet:
Dim curries, act, cat As Double
For Each dataRow As DataRow In dt.Rows
curries = dataRow("Activity")
getting the error when i try to assign Activity to curries.but "activity" is a string in the database....
I am extending some of the basic data types in vb.net for a large application. This includes integer, string, short, etc. As it stands, my new data type objects have names like MYInteger and MYString. Since these are the only types I'm using for my application and they are mostly compatible with the default types, is there a way I can override the defaults with mine so when you Dim iThing as Integer you're actually using my slightly customized integer type?
View 3 RepliesI am trying to convert a piece of C# code, and I ran it through a converter, and had to make some changes.I am now running into this error:
Operator '<<' is not defined for types 'Char' and 'Integer'
The code is:
a += CType(URL(k + 0) + (URL(k + 1) << 8) + (URL(k + 2) << 16) + (URL(k + 3) << 24), UInt32)
b += CType(URL(k + 4) + (URL(k + 5) << 8) + (URL(k + 6) << 16) + (URL(k + 7) << 24), UInt32)
c += CType(URL(k + 8) + (URL(k + 9) << 8) + (URL(k + 10) << 16) + (URL(k + 11) << 24), UInt32)
The error occurs on each of the (URL(...) << X)
Is it possible to automatically insert a Code Snippet when an interface is implemented? If so, how do you do it? I am looking for something similar to when you implement IDispoable in VB.[code]This will be used by web forms when transfering parameters from one page to the next using Server.Transfer
View 1 RepliesOperator '+' is not defined for types '1-dimensional array of Byte' and 'Byte'.How would I change the assignment statement in the code below so that each indexed byte position gets assigned the converted integer value in the for loop?
Dim byteArray As Byte()
Property Data_Out() As Integer()
Get[code].....
I am getting Errors: Operator '<' is not defined for types 'System.Windows.Forms.Button' and 'Integer'.
Operator '>' is not defined for types 'System.Windows.Forms.Button' and 'Integer'.
Value of type 'Integer' cannot be converted to 'System.Windows.Forms.Button'.
And my program does not work!
Below is my code..............
Private Sub ProgressBar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProgressBar1.Click
ProgressBar1.Value = TextBox1.Text
End Sub
[CODE]...
Here's my code, it works but its not elegant --- can this be improved? The final multiplication is done for the Analog to Digital conversion (weight of the LSB).
Public
Class Form1
Private
Sub Button1_Click(ByVal
sender As System.Object,
[Code] ......
Is there an easy way to get the relative complement of two sets? Perhaps using LINQ?I have to find the relative compliment of a set A relative to B. Both A and B are of type HashSet<T> but I think the algorithm could be made more general (IEnumerable<T> or even ISet<T>)?
View 1 Repliesi used the following code in vb 6.0 and it produced the required value but when i used the same code in vb.net it shows the error "Operator * is not defined for types Date and Integer"
Dim Act_Rec As Integer
Dim VTar_Hr As String
Dim VYptime As String[code]....
I have a class with a Property called 'Value' which is of type Object.Value can be of any type, a structure, a class, an array, IList etc.My problem is with the setter and determining whether the value has changed or not.This is simple enough for value types, but reference types and lists present a problem.For a class, would you assume that the Equals method has been implemented correctly, or just assume that the value has changed every time the setter is called?If I did assume it's changed, then perhaps I should assume it for value types as well, so that the behaviour is consistent.
View 2 RepliesI am trying to write a VB.NET program that will call a function in an unmanaged C DLL passing the structure like this:[code]What I have not been able to figure out is how to handle the "unsigned char *msg" part. How would you define this in the VB.NET Structure?
View 2 RepliesWhy does this not work ?
[code...]
I get "tostring cant be called without a narrowing conversion"
I am trying to create a UInt128 structure, based on some C code I found. The 128 bit number is stored as two UInt64's. All was going well until:1. I tried to define MaxValue and MinValue. The code I found was
[code]...
I am trying to create a UInt128 structure, based on some C code I found. The 128 bit number is stored as two UInt64's. All was going well until:
1.I tried to define MaxValue and MinValue.[code]
2. I tried to add. Apparently in C if you do the equivalent of this:[code]you do not get an overflow, the result "wraps".
I'm working with byte arrays and building and disassembling Int16/UInt16 and Int32/UInt32 from them. I'd like to not worry about the Sign bit until I return the final value and just have the code return the appropriate value for the data type that was requested to be converted to/from the byte array
View 3 RepliesI'm trying to generate random dates in between two dates that are selected with a date and time selection control.Ideally, I would like to get the 'ticks' of each date, generate a random number between those, and then convert that back into a date.However I'm getting arithmetic overflow errors when I try to generate a random number from the between the ticks. I've tried many approaches - directly seeding with both the low and high date ticks, as well as subtracting.
Private Function randomDate() As ULong
Dim rand As New Random(Date.Now.Ticks Mod Integer.MaxValue)
Dim holder As ULong = DateTimePicker2.Value.Ticks - DateTimePicker1.Value.Ticks
[code].....
In VB .Net this code:
Dim t As UInt64
t = UInt64.MaxValue
t += 2UL
causes an overflow. It is my understanding that in C it "wraps". Assuming that is true, is there a way to mimic this in VB? I need this for an implementation of UInt128 I am trying to write.
How do I pull off an unsigned left shift in VB.Net while using Option Strict? Maybe I am doing it wrong, but while trying to implement my own IP2Long function (I have my reasons), I'm testing things to make sure I have my head wrapped around the conversion process properly. Tried a few tests, all seem to cause errors.
Dim a As Int32
a = CUint(172 << 24) 'Constant expression not representable in type 'UInteger'
a = DirectCast((172 << 24), UInt32) 'Value of type 'Integer' cannot be converted to 'UInteger'
a = Convert.ToUInt32(172 << 24) 'Compiles, but throws an OverflowException
The last one is especially befuddling. 172 << 24 is a mere 2,885,681,152, well under the limit imposed by the UInt32 data type. My assumption is .NET is doing the left-shift in signed mode, then tries to convert, to unsigned, and this tosses up some kind of error. Basically, my question boils down to this: why do unsigned numeric have to act like such hacks to the .NET framework at times? Is it really that hard for Microsoft to make Unsigned data types intrinsic to the framework?