|
I agree the Leif binary tree method would run the fastest, but if the
psuedocode that follows represents it correctly, I think it will be a coding
rats nest.
If Bit_0 is On
If Bit_1 is On
If Bit_2 is On
If Bit_3 is On
Result = 7
Else
Result = 6
End
Else
If Bit_3 is On
Else
Result = 5
End
End
Steve Richter
----- Original Message -----
From: "Harry Williams" <planesmart@teleteam.com>
To: <mi400@midrange.com>
Sent: Thursday, December 20, 2001 9:02 PM
Subject: Re: [MI400] Is there an easy way to scan for bits?
> 00110101 = 0
> 000111 = 1
> 0111 = 2
> 1000 = 3
> 1011 = 4
> 1100 = 5
> 1110 = 6
> 1111 = 7
> 10011 = 8
> 10100 = 9
> 00111 = 10
> 01000 = 11
> 001000 = 12
> 000011 = 13
> 110100 = 14
> 110101 = 15
> 101010 = 16
> 101011 = 17
> 0100111 = 18
> 0001100 = 19
> 0001000 = 20
> 0010111 = 21
> 0000011 = 22
> 0000100 = 23
> 0101000 = 24
> 0101011 = 25
> 0010011 = 26
> There are about 300 of these codes.
>
> Leif Svalgaard wrote:
>
> > From: Steve Richter <srichter@AutoCoder.com>
> > > Leif,
> > > I find your solution intriguing, but I cant think anymore today unless
I
> > get
> > > paid for it. So I cant verify it.
> > > Could you show how it would work with Harry's data:
> > >
> > > "As an example. I start reading the bits, and if I
> > > read 00110101 then I translate it to the number 0. If I read 000111
I
> > > translate it to 1, 0111 translates to 2, 1000 goes to 3, 10011 is 8,
> > > ..... 0100111 translates to 18. There is about 100 of these codes."
> > >
> > > And Harry, could you post more of the codes and their resulting values
?
> > >
> >
> > here is a sketch, it need be fleshed out with more values.
> > Also, there need be some code to shift the bits over and
> > to get new bits from the source:
> >
> > DCL DD BITS CHAR(12);
> > DCL DD NBR BIN(2);
> >
> > TOP: TSTBUM(B) BITS, X'80'/ONES(L1);
> > L0: TSTBUM(B) BITS, X'40'/ONES(L01);
> > L00: TSTBUM(B) BITS, X'20'/ONES(L001);
> > L000: TSTBUM(B) BITS, X'10'/ONES(L0001);
> > L0000: /* ... */
> >
> > L0001: TSTBUM(B) BITS, X'08'/ONES(L00011);
> > L00010: /* ... */
> >
> > L00011: TSTBUM(B) BITS, X'04'/ONES(L000111);
> > L000110: /* ... */
> >
> > L000111: CPYNV(B) NBR, 1/POS(DONE);
> >
> > L01: TSTBUM(B) BITS, X'20'/ONES(L011);
> > L010: TSTBUM(B) BITS, X'10'/ONES(L0101);
> > L0100: TSTBUM(B) BITS, X'08'/ONES(L01001);
> > L01000: /* ... */
> >
> > L01001: TSTBUM(B) BITS, X'04'/ONES(L010011);
> > L010010: /* ... */
> >
> > L010011: TSTBUM(B) BITS, X'02'/ONES(L0100111);
> > L0100110: /* ... */
> >
> > L0100111: CPYNV(B) NBR, 18/POS(DONE);
> >
> > L001: TSTBUM(B) BITS, X'20'/ONES(L0011);
> > L0010: /* ... */
> >
> > L0011: TSTBUM(B) BITS, X'08'/ONES(L00111);
> > L00110: TSTBUM(B) BITS, X'04'/ONES(L001101);
> > L00001: /* ... */
> >
> > L001101: TSTBUM(B) BITS, X'02'/ONES(L0011010);
> > L0011010: TSTBUM(B) BITS, X'01'/ONES(L00110101);
> > L00110100: ...
> > L00110101: CPYNV(B) NBR, 0/ZER(DONE);
> >
> > /* ... */
> >
> > L1: TSTBUM(B) BITS, X'40'/ONES(L11);
> > L10: TSTBUM(B) BITS, X'20'/ONES(L101);
> > L100: TSTBUM(B) BITS, X'10'/ONES(L1001);
> > L1000: CPYNV(B) NBR, 3/POS(DONE);
> >
> > L1001: TSTBUM(B) BITS, X'08'/ONES(L10011);
> > L10010: /* ... */
> >
> > L10011: CPYNV(B), NBR, 8/POS(DONE);
> >
> > /* ... */
> >
> > DONE:
> >
> > Another fast way would be to have a table with 2^12 entries
> > in it. Then simply use the 12 bits as an index to get the number
> > (and the shift).
> >
> > _______________________________________________
> > This is the MI Programming on the AS400 / iSeries (MI400) mailing list
> > To post a message email: MI400@midrange.com
> > To subscribe, unsubscribe, or change list options,
> > visit: http://lists.midrange.com/cgi-bin/listinfo/mi400
> > or email: MI400-request@midrange.com
> > Before posting, please take a moment to review the archives
> > at http://archive.midrange.com/mi400.
>
> _______________________________________________
> This is the MI Programming on the AS400 / iSeries (MI400) mailing list
> To post a message email: MI400@midrange.com
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/cgi-bin/listinfo/mi400
> or email: MI400-request@midrange.com
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/mi400.
>
>
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.