Padded Binary String
#15
(08-25-2022, 04:21 PM)bplus Wrote:
(08-25-2022, 04:17 PM)bplus Wrote: I don't like those negative numbers!
Code: (Select All)
Do
    Input "What ever number "; whatevernumber
    bn$ = _Bin$(whatevernumber) 'the binary string returned by _BIN$
    dw = 8 'desired field width

    If Len(bn$) >= dw Then
        Print bn$ 'number already in desired width or even longer
    Else
        Print Right$(String$(dw, "0") + bn$, dw) 'left padded with zeros
    End If
    Print "Back to decimal? "; Val("&B" + bn$)
Loop Until whatevernumber = 0
[Image: Dont-trust-those-negative-numbers.png]

And we haven't even gotten Real yet! like 3 and 1/3 ;-))


Makes perfect sense, if you just think about it for a moment.  Some questions can have more than a single answer.  After all, let me ask:  What is the square root of four??

If you say 2, you're correct!
If you say -2, you're also correct!

In this case, that's more-or-less what you're seeing here -- the correct answer, but you're only showing HALF the correct answer!

Code: (Select All)
Dim x As Long
Do
    Input "What ever number "; whatevernumber
    bn$ = _Bin$(whatevernumber) 'the binary string returned by _BIN$
    dw = 8 'desired field width

    If Len(bn$) >= dw Then
        Print bn$ 'number already in desired width or even longer
    Else
        Print Right$(String$(dw, "0") + bn$, dw) 'left padded with zeros
    End If
    x = Val("&B" + bn$)
    Print "Back to decimal? "; x, Val("&B" + bn$) '2 options as your binary value might be either a signed
    '                                  or unsigned number, based upon the variable type it's returned to.
    '                                  Think of how SQR(4) is both +2 and -2.  It has two answers.
    '                                  In this case, you have to define which type you want your binary to represent
    '                                  SIGNED LONG x, or UNSIGNED LONG by default.

Loop Until whatevernumber = 0 - 1

You have to specify which variable type you're returning a binary value back to.  Is it a byte?  integer?  long?  signed or unsigned?  

Quick, tell me: What's the value of:  11111111??   

Well, you got that wrong!  It's 11,111,111!!  I never mentioned it was binary, now did I?

Of course, it could also be hexadecimal...   Which you still got wrong as you didn't think of that possibility either!  Or octal...

You have to define what those 1's and 0's correspond back to, otherwise the computer just has to make a guess for you.  In the case of VAL, it's guessing FLOAT -- not even an integer type at all LOL! -- and gives you the unsigned value back.   If you want a signed value, make certain you assign the result to a signed variable.  Else, expect the wrong answer. Tongue
Reply


Messages In This Thread
Padded Binary String - by James D Jarvis - 08-25-2022, 12:35 AM
RE: Padded Binary String - by mnrvovrfc - 08-25-2022, 01:45 AM
RE: Padded Binary String - by James D Jarvis - 08-25-2022, 01:50 AM
RE: Padded Binary String - by mnrvovrfc - 08-25-2022, 01:56 AM
RE: Padded Binary String - by SMcNeill - 08-25-2022, 04:27 AM
RE: Padded Binary String - by Pete - 08-25-2022, 04:53 AM
RE: Padded Binary String - by SMcNeill - 08-25-2022, 04:59 AM
RE: Padded Binary String - by Pete - 08-25-2022, 06:12 AM
RE: Padded Binary String - by RhoSigma - 08-25-2022, 08:19 AM
RE: Padded Binary String - by mnrvovrfc - 08-25-2022, 03:12 PM
RE: Padded Binary String - by bplus - 08-25-2022, 04:17 PM
RE: Padded Binary String - by bplus - 08-25-2022, 04:21 PM
RE: Padded Binary String - by SMcNeill - 08-25-2022, 06:18 PM
RE: Padded Binary String - by RhoSigma - 08-25-2022, 04:36 PM
RE: Padded Binary String - by SMcNeill - 08-25-2022, 04:30 PM
RE: Padded Binary String - by bplus - 08-25-2022, 07:51 PM
RE: Padded Binary String - by SMcNeill - 08-25-2022, 08:03 PM



Users browsing this thread: 10 Guest(s)