Avatar billede ser Nybegynder
07. november 2006 - 14:21 Der er 3 kommentarer og
1 løsning

Omregning af digitale værdier

Jeg har en variabel af type long VB6 (4 byte type INIT ) den antar undertiden nogle negative værdier, og så er der problæemer,  årsagen er at værdien er "tilblevet" ved at konverterer et op til 28 lang binær værdi til feltet, min opgave er at gendanne den binære værdi, dette er også nemt sålænge variablen indeholder en positiv decimal værdi, men når den er negativ, kan jeg ikke finde ud af hvordan.
Avatar billede learningvba Nybegynder
07. november 2006 - 14:40 #1
Tænker du på noget i den her stil ?

Sub test()
  Dim xx As Long
  xx = -200
  Debug.Print xx
  Debug.Print Abs(xx)
End Sub
Avatar billede ser Nybegynder
07. november 2006 - 15:44 #2
Nej så enkelt er det ikke

et eksempel
min ( long ) variabel inholder værdien -24576 værdien et tilblevet ved at der er indlæst en ( sikkert for stor ) POSITIV binær værdi ( jeg tror det der er galt er at når det binære tal når en vis størelse, så tolkes den mest betydende bit som en indikator på om værdien er positiv eller negativ.
Hvis jeg har rat så er den rigtige værdi lig med abs(-24576) tillagt den decimale værdi af de mest betydende bit,  men hvad er det ?
Avatar billede shy Nybegynder
07. november 2006 - 20:26 #3
Tallet -24576 er hex: A000, eller bin: 1010 0000 0000 0000
D.v.s. at sign bittet bit 15 er sat.
Tallet unsigned = 40960 altså 65536 + (-24576)
D.v.s. at hvis din variabel bliver negativ kan du sige (65536 + Variabel) = Unsigned value
Avatar billede learningvba Nybegynder
08. november 2006 - 08:02 #4
Det virkede også for nemt :-)
Håber at shy's svar er brugbart.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester