|
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-2024 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.