| Dodaj wpis w tym temacie
Spis tematów | Strona: 1 2 ... 325 326 327 ... 561 562 Wyślij wiadomość do admina 🎱 MultiPairs 2027 – nowa wersja w przeglądarce, otwórz BETA |
| Przewiń wpisy ↓ | moje ... oprogramowanie |
2020-04-29 (15:56) 777chData rejestracji: 2005-11-07 Ilość postów: 23259 | wpis nr 1 289 109 [ CZCIONKA MONOSPACE ] Masked operations This is a basic low level approach to handle bit manipulation. Main advantage is that operations can be performed with groups of bits at once. But the user has to deal with all operations by himself. Another problem is max range of used values in function parameters. There must be separate implemented functions for each ordinal type for best performance (as opposed to C templates using preprocessor). Jest to podstawowe podejście do obsługi manipulacji bitami na niskim poziomie. Główną zaletą jest to, że operacje można wykonywać jednocześnie z grupami bitów. Ale użytkownik musi sam poradzić sobie ze wszystkimi operacjami. Kolejnym problemem jest maksymalny zakres wartości użytych w parametrach funkcji. W celu uzyskania najlepszej wydajności muszą istnieć osobne zaimplementowane funkcje dla każdego typu porządkowego (w przeciwieństwie do szablonów C używających preprocesora). procedure ClearBit(var Value: QWord; Index: Byte); begin Value := Value and ((QWord(1) shl Index) xor High(QWord)); end; procedure SetBit(var Value: QWord; Index: Byte); begin Value:= Value or (QWord(1) shl Index); end; procedure PutBit(var Value: QWord; Index: Byte; State: Boolean); begin Value := (Value and ((QWord(1) shl Index) xor High(QWord))) or (QWord(State) shl Index); end; function GetBit(Value: QWord; Index: Byte): Boolean; begin Result := ((Value shr Index) and 1) = 1; end; źródło https://wiki.freepascal.org/Bit_manipulation --- wpis edytowano 2020-04-29 15:57 --- |
2020-04-29 (16:57) fair_playData rejestracji: 2016-05-12 Ilość postów: 9076 | wpis nr 1 289 119 [ CZCIONKA MONOSPACE ] 777ch> Z reguły chodziło o to, żeby "przetłumaczyć" Excela na Pascala, Delphi lub C. Tym razem dokonałem "tłumaczenia" odwrotnego Spróbuj tę procedurę: For y = 0 To 255 b = y result = 0 For i = 1 To 8 result = (result * 2) Mod 256 + b Mod 2 b = Int(b / 2) Next Cells(y + 1, 1) = y Cells(y + 1, 2) = result Next Ale co robi ta funkcja za cholerę nie mogę dociec PS. poprawiłem błąd: Cells(y + 1, 1) = b na Cells(y + 1, 1) = y --- wpis edytowano 2020-04-29 17:09 --- |
2020-04-29 (18:11) 777chData rejestracji: 2005-11-07 Ilość postów: 23259 | wpis nr 1 289 124 [ CZCIONKA MONOSPACE ] rzuciłem okiem i odpaliłem......prawidłowo na excel ta funkcja to odwrócenie jakby czytanie wspak dla stringów np leon byłoby noel a dla kobyłamazamałybok było by kobyłamazamałybok pozdrawiam |
2020-04-29 (18:28) 777chData rejestracji: 2005-11-07 Ilość postów: 23259 | wpis nr 1 289 130 [ CZCIONKA MONOSPACE ] czytam ale już sobie --> nalałem drinka zawsze przed...... wiadomościami Polsat ,potem Tvn piję drinka....... dla kurażu |
2020-04-29 (18:30) fair_playData rejestracji: 2016-05-12 Ilość postów: 9076 | wpis nr 1 289 132 [ CZCIONKA MONOSPACE ] właśnie pisałem procedurę żeby zobrazować ten palindrom liczbowy Sub odbicie() margines = 3 For y = 0 To 255 Cells(y + 1, margines + 8 ) = y Mod 2 Cells(y + 1, margines + 10) = y Mod 2 Cells(y + 1, margines + 7) = Int(y / 2) Mod 2 Cells(y + 1, margines + 11) = Int(y / 2) Mod 2 Cells(y + 1, margines + 6) = Int(y / 4) Mod 2 Cells(y + 1, margines + 12) = Int(y / 4) Mod 2 Cells(y + 1, margines + 5) = Int(y / 8 ) Mod 2 Cells(y + 1, margines + 13) = Int(y / 8 ) Mod 2 Cells(y + 1, margines + 4) = Int(y / 16) Mod 2 Cells(y + 1, margines + 14) = Int(y / 16) Mod 2 Cells(y + 1, margines + 3) = Int(y / 32) Mod 2 Cells(y + 1, margines + 15) = Int(y / 32) Mod 2 Cells(y + 1, margines + 2) = Int(y / 64) Mod 2 Cells(y + 1, margines + 16) = Int(y / 64) Mod 2 Cells(y + 1, margines + 1) = Int(y / 128 ) Mod 2 Cells(y + 1, margines + 17) = Int(y / 128 ) Mod 2 Next End Sub |
2020-04-29 (18:31) 777chData rejestracji: 2005-11-07 Ilość postów: 23259 | wpis nr 1 289 133 [ CZCIONKA MONOSPACE ] Czy dalej uważasz , że zastosowanie operacji na byte, może dać podobny czas do operacji jak -->na wielowymiarowych tablicach ??? |
2020-04-29 (18:38) fair_playData rejestracji: 2016-05-12 Ilość postów: 9076 | wpis nr 1 289 135 [ CZCIONKA MONOSPACE ] tak myślę, bo możliwość ustawiania odpowiedniego bitu na 1 w komórce adresów nie wymaga już tego sprawdzania czy już takiej "szóstki" nie zarejestrowaliśmy. ustawiając n-krotnie ten sam bit na 1 zawsze będzie 1. Cała procedura sprowadzi się do skanowania rozpisu linia po linii, szóstki po szóstce w tej linii, wyliczenie adresu, i ustawienie 1 na określonym bicie. Operacja na jednej tablicy. --- wpis edytowano 2020-04-29 18:45 --- |
2020-04-29 (18:59) fair_playData rejestracji: 2016-05-12 Ilość postów: 9076 | wpis nr 1 289 136 [ CZCIONKA MONOSPACE ] trochę z innej beczki. Podglądając przebieg procedury step by step najechałem myszą na linię jak na zdjęciu i okazuje się, że wynik kombinacji nie jest liczbą całkowitą Jak to wytłumaczyć ? ![]() |
2020-04-29 (19:29) 777chData rejestracji: 2005-11-07 Ilość postów: 23259 | wpis nr 1 289 141 [ CZCIONKA MONOSPACE ] sprawdź l2 tu będzie rozwiązanie l2 = mat(y, x2) If liczb - l2 > 4 Then adr2 = adr1 - Application.WorksheetFunction.Combin(liczb - l2, 5) nie pracowałem nad tym tylko na oko widać --- wpis edytowano 2020-04-29 19:31 --- |
2020-04-29 (19:54) fair_playData rejestracji: 2016-05-12 Ilość postów: 9076 | wpis nr 1 289 144 [ CZCIONKA MONOSPACE ] l2 to zwykła "2" z drugiej komórki pierwszej linii rozpisu. Zmieniłem na l2 = int(mat(y, x2)) i niczego to nie zmieniło. Wszystkie kolejne adresy są takie same z ,9999999999 po przecinku. Nie zmienia to poprawności obliczeń ale to ciekawostka. --- wpis edytowano 2020-04-29 19:59 --- |
2020-04-29 (21:02) kleszekData rejestracji: 2006-05-27 Ilość postów: 4990 | wpis nr 1 289 177 [ CZCIONKA MONOSPACE ] Walczymy dalej C(35,10,5,5)=2585 wysłane. |
2020-04-29 (23:21) fair_playData rejestracji: 2016-05-12 Ilość postów: 9076 | wpis nr 1 289 215 [ CZCIONKA MONOSPACE ] Znalazłem coś co byłoby rewelacyje gdyby w moim Excelu się dało użyć. BITOR, BITAND, BITLSHIFT, BITRSHIFT https://support.office.com/pl-pl/article/bitor-funkcja-f6ead5c8-5b98-4c9e-9053-8ad5234919b2 https://support.microsoft.com/pl-pl/office/bitand-funkcja-8a2be3d7-91c3-4b48-9517-64548008563a?ui=pl-pl&rs=pl-pl&ad=pl Niestety wpisując w komórce formułę =BITAND(7,13) otrzymuję #NAZWA? bo oczywiście nie ma tej funkcji na liście. Gdy próbuję użyć tych funkcji w makro to: c=BITAND(7,13 -> "Sub or Function not defined" c=WorksheetFunction(7,13) -> "Object doesn't support this property or method" Czyżby Excel 2007 nie posiadał jeszcze tych funkcji ? http://codevba.com/excel/WorksheetFunction.htm#.XqnwHZB7l9B --- wpis edytowano 2020-04-29 23:30 --- |
2020-04-30 (09:53) fair_playData rejestracji: 2016-05-12 Ilość postów: 9076 | wpis nr 1 289 264 [ CZCIONKA MONOSPACE ] kleszek> Masz nowego kompa, to może masz i nowszego Office niż 2007 (notabene już nie wspieranego przez Microsoft). Jeśli tak to czy masz na liście funkcji Excela takie cudeńka jak: BITAND, BITOR, BITLSHIFT, BITRSHIFT, BITXOR i coś jeszcze z BIT z przodu ? Pozdrawiam |
2020-04-30 (10:36) 777chData rejestracji: 2005-11-07 Ilość postów: 23259 | wpis nr 1 289 278 [ CZCIONKA MONOSPACE ] zerknij https://support.google.com/docs/answer/9083934 w moim excelu nie mam |
2020-04-30 (10:42) fair_playData rejestracji: 2016-05-12 Ilość postów: 9076 | wpis nr 1 289 281 [ CZCIONKA MONOSPACE ] O to wszystko mi chodzi, zwłaszcza BITOR, Właśnie BITOR pozwoliłby zwiększyć dostępną pamięć 8-krotnie 1, Dostępną pamięć n "dzielisz na 8 "wierszy bitowych. 2. Mając wyliczony adr6, funkcją wiersz=QUOTIENT(adr6,n) znajdujesz "wiersz do zapisu, a instrukcją adres=MOD(adr6,n) pozycję w tym wierszu. 3 zapisujesz "szóstkę" :matadr(adres)=BITOR(matadr(adres,2^(wiersz-1)) 3 zliczając wystąpienia szóstek skanujesz matadr ile=0 For i=1 to n ile=ile+BITAND(matadr(i,1)+BITAND(matadr(i,2)+BITAND(matadr(i,4)+BITAND(matadr(i,8)+BITAND(matadr(i,16)+BITAND(matadr(i,1)+BITAND(matadr(i,32)+BITAND(matadr(i,64) next :) --- wpis edytowano 2020-04-30 11:01 --- |
2020-04-30 (13:14) 777chData rejestracji: 2005-11-07 Ilość postów: 23259 | wpis nr 1 289 297 [ CZCIONKA MONOSPACE ] Excel 2013 BITAND Funkcje inżynierskie. Zwraca wartość operacji bitowej ORAZ (AND) dla dwóch liczb. BIT.PRZESUNIĘCIE.W.LEWO Funkcje inżynierskie. Zwraca liczbę przesuniętą w lewo o liczbę bitów określoną przez argument wartość_przesunięcia. BITOR Funkcje inżynierskie. Zwraca wartość operacji bitowej LUB (OR) dla dwóch liczb. BIT.PRZESUNIĘCIE.W.PRAWO Funkcje inżynierskie. Zwraca liczbę przesuniętą w prawo o liczbę bitów określoną przez argument wartość_przesunięcia. BITXOR Funkcje inżynierskie. Zwraca wartość operacji bitowej alternatywy wykluczającej (XOR) dla dwóch liczb. żródło https://support.office.com/pl-pl/article/Nowe-funkcje-w-programie-Excel-2013-075C82BD-15B9-4AD6-AF31-55BB6B011CB9 a więc excel 2013 |
2020-04-30 (13:23) fair_playData rejestracji: 2016-05-12 Ilość postów: 9076 | wpis nr 1 289 299 [ CZCIONKA MONOSPACE ] konieczna przesiadka |
2020-04-30 (14:34) kleszekData rejestracji: 2006-05-27 Ilość postów: 4990 | wpis nr 1 289 310 [ CZCIONKA MONOSPACE ] fair_play, mam excela 2016 i funkcje wymienione przez Ciebie są dostępne |
2020-04-30 (15:14) 777chData rejestracji: 2005-11-07 Ilość postów: 23259 | wpis nr 1 289 320 [ CZCIONKA MONOSPACE ] fair_play przesiadłem się chwilowo jakiś czas temu .. z 5~6 lat temu na 2010 no i . mój program którego używam codziennie a który chodzi płynnie w ver. 2003 prof dostał .... ciężkiej zadyszki i kaszlu dlatego ..... wróciłem do wersji która --> nie stwarza problemów. Może .......jak to zrobicie w excelu to zrobimy coś podobnego w paskalu , albo może sindbad pomoże w c++ bo C najbardziej się do tych operacji nadaje. --- wpis edytowano 2020-04-30 15:14 --- |
2020-04-30 (16:00) fair_playData rejestracji: 2016-05-12 Ilość postów: 9076 | wpis nr 1 289 329 [ CZCIONKA MONOSPACE ] kleszek> To mam jeszcze jedno pytanie. Jak używać tych funkcji w makrze x=BITOR(a,b) ? x=Application.WorksheetFunction.bitor(a,b) ? x=Application.bitor(a,b) ? Podejrzewam, że ten pierwszy wariant, ale wolę się upewnić Spróbuję napisać makro, które sprawdzisz czy zadziała u Ciebie Pozdrawiam |
| | Dodaj wpis w tym temacie | Spis tematów | Wyniki lotto | Strona: 1 2 ... 325 326 327 ... 561 562 Wyślij wiadomość do admina 🎱 MultiPairs 2027 – nowa wersja w przeglądarce, otwórz BETA |