Another way to left shift a 32 bit data?


Closed Thread
Results 1 to 22 of 22

Hybrid View

  1. #1
    Join Date
    May 2013
    Location
    australia
    Posts
    2,671


    Did you find this post helpful? Yes | No

    Default Re: Another way to left shift a 32 bit data?

    you can set or clr any bit in an array
    dis var byte [4]

    dis.0[x] = 1 ; will set bit x in array dis where x=0 to 31

    or make a user command something like this (untested)
    USERCOMMAND "SETBIT" ; BIT,VALUE

    Code:
    SETBIT?CC macro Bitin,Val
    if Bitin <32
      if Bitin > 23
    k=3
      elseif  Bitin > 15
    k=2
      elseif  Bitin > 7
    k=1
      elseif  Bitin <8
    k=0
      endif
    b=Bitin-k*8
    
    
      if Val >0
      bsf _dis+k,b
      else
      bcf  _dis+k,b
      endif
    endif
    endm
    not sure if user cmd is really useful here
    Last edited by richard; - 25th November 2015 at 03:12. Reason: white spac e

  2. #2
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,167


    Did you find this post helpful? Yes | No

    Default Re: Another way to left shift a 32 bit data?

    Thanks Richard.

    Interesting approach!

    Ioannis

  3. #3
    Join Date
    Aug 2003
    Posts
    985


    Did you find this post helpful? Yes | No

    Default Re: Another way to left shift a 32 bit data?

    I don’t yet know if I’ve wrecked it in basic.

    Code:
    shifter byte
    offset byte
    array byte[7]
    
    
    shifter = 11
    offset = shifter >> 3            // byte in array to pass to whatever needs the 4 byte result, in this case 2
    array[3] = 1<<(shifter & 7)      // Set it to 00000000 (00000000 00000000 00001000 00000000) 00000000 00000000
    ‘dostuff with array[offset]

  4. #4
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,167


    Did you find this post helpful? Yes | No

    Default Re: Another way to left shift a 32 bit data?

    I could not follow that...

    Ioannis

  5. #5
    Join Date
    Aug 2003
    Posts
    985


    Did you find this post helpful? Yes | No

    Default Re: Another way to left shift a 32 bit data?

    So long as I have not ruined the way a C pointer will work...

    Before any input, the 32 bits you want could be anywhere within the 7 byte array.
    After computation, the memory location of the four bytes of the 32 bit value begins at array[offset].

  6. #6
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,167


    Did you find this post helpful? Yes | No

    Default Re: Another way to left shift a 32 bit data?

    Oh, I see. Thanks for the ideas.

    Still, asm rotate will be faster.

    Ioannis

  7. #7
    Join Date
    Aug 2003
    Posts
    985


    Did you find this post helpful? Yes | No

    Default Re: Another way to left shift a 32 bit data?

    I have my doubts, You only have to call it once.
    Assuming there is equal chance the input is 0-31, an assembler rotate routine will be called mean of 15 times.
    For a shift in either language the overhead is in finding the byte you want to shift.

    Again, assuming it’s still working. I’ll be able to try in PBP soon.

    If I’m mistaken and it’s not another trick you’ve worked out because of the known state of the array at the beginning, that would be helpful.
    It is currently taking me the equal number of assembler instructions as there are bytes in the array to bitwise rotate an array
    that has unknown contents at the beginning, which is the same as in the sixth post of this thread.
    Last edited by Art; - 12th December 2015 at 05:45.

Similar Threads

  1. how to "shift" a data into led matrix display ?
    By CuriousOne in forum mel PIC BASIC Pro
    Replies: 14
    Last Post: - 9th January 2015, 16:09
  2. Bit Shift difference between PIC16 and PIC18 ???
    By bambi123 in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 26th February 2012, 01:04
  3. Shift Right, Left
    By tazntex in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 10th July 2010, 15:28
  4. Replies: 2
    Last Post: - 7th March 2008, 02:16
  5. LCDOUT 4-bit data on 8-bit setting
    By breesy in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 26th June 2006, 18:39

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts