Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Rotate left 2 bits (like assembler)
#20
Well well, qb has once again proven to me how much it really sucks. And real compiler should convert everything in an expression to the largest datatype, especially constants. Thus & wouldn't be needed in an expression where you are using longs. But looks like qb doesn't do that. So here you go, this one works

Code:
function rotLeft& ( num as long )
    rotLeft& = ((num * 4) and &hffff&) or (num and &hc000&)\&h4000&
end function

Longs are needed becuase otherwise the IDE will report an overflow in many cases. When compiled they aren't needed. I tested all the cases you talked about, all work fine as you'll see here

16384
0100000000000000
0000000000000001
0000000000000100
0000000000010000
0000000001000000
0000000100000000
0000010000000000
0001000000000000

-1
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111

-2
1111111111111110
1111111111111011
1111111111101111
1111111110111111
1111111011111111
1111101111111111
1110111111111111
1011111111111111
1111111111111110

Tested with
Code:
cls    
    test& = somenumber.....
    for i = 0 to 8        
        printBin test
        test = rotLeft&( test )
    next i


How does it work? Simple, get the top 2 bits and move them down 14 bits, shift the number 2 bits to the left and combine it with the result of the previous operation. That's what bit rotating is. No branches needed, it's all simple logic.

Code:
shl 2      |1100010100000010|

           -------------------
         11|0001010000001000|
           -------------------
      

           |1100010100000010|
and        |1100000000000000|
           -------------------
shr 14     |1100000000000000|
           -------------------
           |0000000000000011|00000000000000
           -------------------


or         |0001010000001000|
           |0000000000000011|
           -------------------
           |0001010000001011|
          
There, done
oship me and i will give you lots of guurrls and beeea
Reply


Messages In This Thread
Rotate left 2 bits (like assembler) - by Moneo - 05-14-2005, 03:33 AM
Rotate left 2 bits (like assembler) - by Neo - 05-14-2005, 03:37 PM
Rotate left 2 bits (like assembler) - by Moneo - 05-14-2005, 11:33 PM
Rotate left 2 bits (like assembler) - by Mango - 05-15-2005, 07:26 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-15-2005, 10:40 PM
Rotate left 2 bits (like assembler) - by Moneo - 05-16-2005, 04:35 AM
Rotate left 2 bits (like assembler) - by neuro - 05-16-2005, 10:25 PM
Rotate left 2 bits (like assembler) - by Moneo - 05-16-2005, 10:41 PM
Rotate left 2 bits (like assembler) - by Mango - 05-17-2005, 04:34 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-17-2005, 05:14 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-17-2005, 09:59 PM
Rotate left 2 bits (like assembler) - by Moneo - 05-18-2005, 04:41 AM
Rotate left 2 bits (like assembler) - by Blitz - 05-18-2005, 07:52 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-19-2005, 09:25 PM
Rotate left 2 bits (like assembler) - by Blitz - 05-19-2005, 11:01 PM
Rotate left 2 bits (like assembler) - by Moneo - 05-19-2005, 11:58 PM
Rotate left 2 bits (like assembler) - by Blitz - 05-20-2005, 12:49 AM
Rotate left 2 bits (like assembler) - by Blitz - 05-20-2005, 01:54 AM
Rotate left 2 bits (like assembler) - by Anonymous - 05-20-2005, 03:37 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-20-2005, 05:44 AM
Blah - by Lithium - 05-20-2005, 07:56 PM
Re: Blah - by Moneo - 05-20-2005, 11:50 PM
Rotate left 2 bits (like assembler) - by marzecTM - 05-21-2005, 01:04 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-21-2005, 04:24 AM
Rotate left 2 bits (like assembler) - by Blitz - 05-21-2005, 05:04 AM
Rotate left 2 bits (like assembler) - by Deleter - 05-21-2005, 05:04 AM
Rotate left 2 bits (like assembler) - by Blitz - 05-21-2005, 05:05 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-21-2005, 07:14 AM
Rotate left 2 bits (like assembler) - by marzecTM - 05-21-2005, 10:19 AM
Rotate left 2 bits (like assembler) - by Z!re - 05-21-2005, 05:12 PM
Rotate left 2 bits (like assembler) - by Moneo - 05-22-2005, 12:12 AM
Rotate left 2 bits (like assembler) - by Helga - 05-22-2005, 01:12 AM
Rotate left 2 bits (like assembler) - by Z!re - 05-22-2005, 04:14 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-22-2005, 05:31 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-22-2005, 05:40 AM
Rotate left 2 bits (like assembler) - by Z!re - 05-22-2005, 07:18 AM
Rotate left 2 bits (like assembler) - by Mango - 05-22-2005, 12:41 PM
Rotate left 2 bits (like assembler) - by Mango - 05-22-2005, 12:58 PM
Rotate left 2 bits (like assembler) - by Moneo - 05-23-2005, 12:22 AM
Rotate left 2 bits (like assembler) - by Blitz - 05-23-2005, 12:51 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-23-2005, 05:21 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-23-2005, 05:31 AM
Rotate left 2 bits (like assembler) - by marzecTM - 05-23-2005, 06:27 AM
Rotate left 2 bits (like assembler) - by Z!re - 05-23-2005, 06:47 AM
Rotate left 2 bits (like assembler) - by marzecTM - 05-23-2005, 07:05 AM
Rotate left 2 bits (like assembler) - by marzecTM - 05-23-2005, 07:27 AM
Rotate left 2 bits (like assembler) - by Z!re - 05-23-2005, 07:28 AM
Rotate left 2 bits (like assembler) - by Blitz - 05-23-2005, 09:24 AM
Rotate left 2 bits (like assembler) - by Z!re - 05-23-2005, 11:56 AM
Rotate left 2 bits (like assembler) - by Blitz - 05-23-2005, 12:20 PM
Rotate left 2 bits (like assembler) - by Moneo - 05-23-2005, 11:59 PM
Rotate left 2 bits (like assembler) - by Z!re - 05-24-2005, 12:04 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-24-2005, 12:07 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-24-2005, 12:28 AM
Rotate left 2 bits (like assembler) - by Blitz - 05-24-2005, 12:30 AM
Rotate left 2 bits (like assembler) - by Blitz - 05-24-2005, 12:31 AM
Rotate left 2 bits (like assembler) - by Z!re - 05-24-2005, 12:36 AM
Rotate left 2 bits (like assembler) - by marzecTM - 05-24-2005, 12:38 AM
Rotate left 2 bits (like assembler) - by logiclrd - 05-24-2005, 12:44 AM
Rotate left 2 bits (like assembler) - by logiclrd - 05-24-2005, 01:03 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-24-2005, 04:22 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-24-2005, 04:29 AM
Rotate left 2 bits (like assembler) - by Z!re - 05-24-2005, 05:02 AM
Rotate left 2 bits (like assembler) - by logiclrd - 05-24-2005, 05:05 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-24-2005, 05:22 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-24-2005, 05:29 AM
Rotate left 2 bits (like assembler) - by Blitz - 05-24-2005, 05:43 AM
Rotate left 2 bits (like assembler) - by logiclrd - 05-24-2005, 06:10 AM
Rotate left 2 bits (like assembler) - by Z!re - 05-24-2005, 06:28 AM
Rotate left 2 bits (like assembler) - by Blitz - 05-24-2005, 07:43 AM
Rotate left 2 bits (like assembler) - by marzecTM - 05-24-2005, 09:38 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-24-2005, 10:54 PM
Rotate left 2 bits (like assembler) - by logiclrd - 05-25-2005, 04:37 AM
Rotate left 2 bits (like assembler) - by Moneo - 05-25-2005, 05:58 AM
Rotate left 2 bits (like assembler) - by Z!re - 05-25-2005, 06:06 AM
Rotate left 2 bits (like assembler) - by logiclrd - 05-25-2005, 09:03 AM
Rotate left 2 bits (like assembler) - by Anonymous - 05-25-2005, 01:37 PM
Rotate left 2 bits (like assembler) - by Moneo - 05-25-2005, 10:24 PM
Rotate left 2 bits (like assembler) - by logiclrd - 05-25-2005, 11:22 PM
Ok - by Lithium - 05-25-2005, 11:25 PM
Rotate left 2 bits (like assembler) - by logiclrd - 05-25-2005, 11:59 PM
Rotate left 2 bits (like assembler) - by Moneo - 05-26-2005, 04:24 AM
Rotate left 2 bits (like assembler) - by Lithium - 05-30-2005, 07:26 PM
Rotate left 2 bits (like assembler) - by Mango - 05-30-2005, 08:03 PM
Rotate left 2 bits (like assembler) - by Z!re - 05-30-2005, 09:10 PM
Rotate left 2 bits (like assembler) - by Moneo - 05-30-2005, 11:49 PM
Rotate left 2 bits (like assembler) - by Mango - 05-31-2005, 12:06 AM
Using long - by Quibbler - 06-01-2005, 10:01 PM
Rotate left 2 bits (like assembler) - by logiclrd - 06-01-2005, 10:12 PM
Re: Using long - by Moneo - 06-02-2005, 03:07 AM

Forum Jump:


Users browsing this thread: 2 Guest(s)