-
11. Data: 2015-09-01 18:17:48
Temat: Re: Kalkulator z dużymi liczbami
Od: bartekltg <b...@g...com>
On 01.09.2015 18:04, szemrany wrote:
> On Tue, 01 Sep 2015 17:45:04 +0200, bartekltg wrote:
>
>>> ...jak w Pythonie zrobić negację bitów?! Ha! :-)
>
>> Ale... skoro pythonowy int ma potencjalnie nieskończenie
>> wiele bitów, to ile jedynek jest w dopełnieniu liczby 7? ;-)
>
> O tym, że jest nieskończenie wiele bitów dowiedziałem się od Ciebie :-)
> Skoro tak to brak negacji wprost jest logiczny.
;-)
>> Python zapisze to jako -7 i w operacjach bitowych
>
> btw. dlaczego ~7 = -8?
Pewnie stąd:
https://pl.wikipedia.org/wiki/Kod_uzupe%C5%82nie%C5%
84_do_dw%C3%B3ch
>
>> będzie udawał, zę jest tam na początku nieskończenie wiele jedynek.
>> W niektórych operacjach to nie problem (jak np x & ~(x-1) z wątku obok)
>> a czasem trzeba będzie mu wprost powiedzieć, że interesują mnie tylko
>> np 64 bity przez przemnożęnie przez maskę.
>>
>> >>> x=7
>> >>> y=(2**64-1)&(~x)
>> >>> bin(y)
>> '0b1111111111111111111111111111111111111111111111111
111111111111000'
>
> uhm... dzięki za wyjaśnienia.
Możesz szukać dalej. Gdzieś widziałem negacje zrobioną w taki
sposób, że brała liczbę i ilość bitów reprezentacji,
np neg(x, 32).
Możę gdzieś coś takeigo jest ukryte (a jak nie, pewnie warto
dopisać dla wygody).
pzdr
bartekltg
-
12. Data: 2015-09-01 19:31:05
Temat: Re: Kalkulator z dużymi liczbami
Od: "AK" <n...@n...com>
Użytkownik "szemrany" <s...@o...off> napisał:
> ...jak w Pythonie zrobić negację bitów?! Ha! :-)
Normalnie: ~x
PS: Podaj zrodla twych prob na peirwszy ustawiony bit bo dalbym sobie brzuch uciac,
ze metoda szukania polowkowego da lepszy wynik niz zapodales (choc i tak nie
jest zly).
AK
---
Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe
Avast.
https://www.avast.com/antivirus
-
13. Data: 2015-09-01 19:40:27
Temat: Re: Kalkulator z dużymi liczbami
Od: "AK" <n...@n...com>
Użytkownik "bartekltg" <b...@g...com> napisał:
>> O tym, że jest nieskończenie wiele bitów dowiedziałem się od Ciebie :-)
>> Skoro tak to brak negacji wprost jest logiczny.
>
> ;-)
Ale "osochodzi"?
Pythono ma negacje: ~ Dziala to jako zwyczajne dopelnienie do 2.
Oczywiscie masz racje ze trzeba o pamietac o "nieskonczonej ilosci jedynek"
i "maskowac" jelsli ilosc bitow w konkretnej sytuacji ma znaczenie (raczej rzadkie
przypoadki).
AK
---
Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe
Avast.
https://www.avast.com/antivirus
-
14. Data: 2015-09-01 19:47:15
Temat: Re: Kalkulator z dużymi liczbami
Od: szemrany <s...@o...off>
On Tue, 1 Sep 2015 19:31:05 +0200, AK wrote:
>> ...jak w Pythonie zrobić negację bitów?! Ha! :-)
>
> Normalnie: ~x
>>> x = 7
>>> ~x
-8
Bartek pisał o nieskończoności integera, poza tym liczby ujemne są
reprezentowane przez kod U2, więc jak rozumiem to co powyżej wkleiłem mam
rozumieć tak:
7 = 0b111
~7 = 0b(1)1000 - gdzie (1) oznacza nieskończoność jedynek "z przodu" liczby
zatem konsola pythonowa obcina te wiodące jedynki i ogranicza się do
pokazania znaku minus oraz liczby 0b1000 czyli 8, stąd -8
dobrze kombinuję?
Jeśli tak jest to imho kiepskie to jest, fajnie byłoby, gdyby python
wyrównywał podaną wartość do najbliższej pełnej reprezentacji bajtowej, w
tym wypadku do jednego bajta i tak też dokonywał operacji negacji, czyli w
wyniku ~0b111 chciałbym mieć 0b11111000 - ale chcieć to ja sobie mogę ;-)
> PS: Podaj zrodla twych prob na peirwszy ustawiony bit bo dalbym sobie brzuch uciac,
> ze metoda szukania polowkowego da lepszy wynik niz zapodales (choc i tak nie
jest zly).
Chcesz źródła w pascalu?
--
howgh
szemrany
"Trzeba z żywymi naprzód iść, po życie sięgać nowe,
a nie w uwiędłych laurów liść z uporem stroić głowę"
-
15. Data: 2015-09-01 20:02:47
Temat: Re: Kalkulator z dużymi liczbami
Od: bartekltg <b...@g...com>
On 01.09.2015 19:40, AK wrote:
> Użytkownik "bartekltg" <b...@g...com> napisał:
>
>>> O tym, że jest nieskończenie wiele bitów dowiedziałem się od Ciebie :-)
>>> Skoro tak to brak negacji wprost jest logiczny.
>>
>> ;-)
>
> Ale "osochodzi"?
> Pythono ma negacje:
No ma. Ale działa ona zaskakująco dla kogoś, kto głownie siedzi
w intach i longach.
~7 to -8.
> ~ Dziala to jako zwyczajne dopelnienie do 2.
No nie do końca. Negując 7 spodziewamy sie czegoś w rodzaju
111....111000b
(co swoją drogą jest równe -8 jeśli liczba jest ze znakirm:)
> Oczywiscie masz racje ze trzeba o pamietac o "nieskonczonej ilosci jedynek"
> i "maskowac" jelsli ilosc bitow w konkretnej sytuacji ma znaczenie
> (raczej rzadkie przypoadki).
No i te dwa posty były zwróceniem an to uwagi.
o to chodzi;-)
pzdr
bartekltg
-
16. Data: 2015-09-01 20:04:56
Temat: Re: Kalkulator z dużymi liczbami
Od: bartekltg <b...@g...com>
On 01.09.2015 19:47, szemrany wrote:
> On Tue, 1 Sep 2015 19:31:05 +0200, AK wrote:
>
>>> ...jak w Pythonie zrobić negację bitów?! Ha! :-)
>>
>> Normalnie: ~x
>
>>>> x = 7
>>>> ~x
> -8
>
> Bartek pisał o nieskończoności integera, poza tym liczby ujemne są
> reprezentowane przez kod U2, więc jak rozumiem to co powyżej wkleiłem mam
> rozumieć tak:
> 7 = 0b111
> ~7 = 0b(1)1000 - gdzie (1) oznacza nieskończoność jedynek "z przodu" liczby
> zatem konsola pythonowa obcina te wiodące jedynki i ogranicza się do
> pokazania znaku minus oraz liczby 0b1000 czyli 8, stąd -8
>
> dobrze kombinuję?
>
> Jeśli tak jest to imho kiepskie to jest, fajnie byłoby, gdyby python
> wyrównywał podaną wartość do najbliższej pełnej reprezentacji bajtowej, w
> tym wypadku do jednego bajta i tak też dokonywał operacji negacji, czyli w
To by był koszmar. Nagecja 255 daje 0, a negacja 256
1111111011111111b
pzdr
bartekltg
>
-
17. Data: 2015-09-01 21:19:33
Temat: Re: Kalkulator z dużymi liczbami
Od: "AK" <n...@n...com>
Użytkownik "szemrany" <s...@o...off> napisał:
> ~7 = 0b(1)1000 - gdzie (1) oznacza nieskończoność jedynek "z przodu" liczby
> zatem konsola pythonowa obcina te wiodące jedynki i ogranicza się do
> pokazania znaku minus oraz liczby 0b1000 czyli 8, stąd -8
>
> dobrze kombinuję?
No nie calkliem. Po prostu to jest int ze znakiem (w U2) wiec python to tak pokazuje.
Po prostu w pythonie nie ma liczb typu unsigned.
> Jeśli tak jest to imho kiepskie to jest, fajnie byłoby, gdyby python
> wyrównywał podaną wartość do najbliższej pełnej reprezentacji bajtowej, w
> tym wypadku do jednego bajta i tak też dokonywał operacji negacji, czyli w
> wyniku ~0b111 chciałbym mieć 0b11111000 - ale chcieć to ja sobie mogę ;-)
Wystarczy zamaskowac z 0b11111111
> Chcesz źródła w pascalu?
Tak. Ostatecznie w miare duzo w nim pisalem (choc wieki temu:).
AK
---
Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe
Avast.
https://www.avast.com/antivirus
-
18. Data: 2015-09-01 21:24:46
Temat: Re: Kalkulator z dużymi liczbami
Od: "AK" <n...@n...com>
Użytkownik "bartekltg" <b...@g...com> napisał:
>> ~ Dziala to jako zwyczajne dopelnienie do 2.
>
> No nie do końca. Negując 7 spodziewamy sie czegoś w rodzaju
> 111....111000b
> (co swoją drogą jest równe -8 jeśli liczba jest ze znakirm:)
No i masz odpowiedz. Po prostu Python nie ma typow unsigned.
Pokazuje wiec jako zwyczajny signed int
AK
---
Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe
Avast.
https://www.avast.com/antivirus
-
19. Data: 2015-09-01 21:40:38
Temat: Re: Kalkulator z dużymi liczbami
Od: bartekltg <b...@g...com>
On 01.09.2015 21:24, AK wrote:
> Użytkownik "bartekltg" <b...@g...com> napisał:
>
>>> ~ Dziala to jako zwyczajne dopelnienie do 2.
>>
>> No nie do końca. Negując 7 spodziewamy sie czegoś w rodzaju
>> 111....111000b
>> (co swoją drogą jest równe -8 jeśli liczba jest ze znakirm:)
>
> No i masz odpowiedz. Po prostu Python nie ma typow unsigned.
> Pokazuje wiec jako zwyczajny signed int
To jest zła odpowiedź. ;>
pzdr
bartekltg
-
20. Data: 2015-09-01 22:15:47
Temat: Re: Kalkulator z dużymi liczbami
Od: szemrany <s...@o...off>
On Tue, 01 Sep 2015 20:04:56 +0200, bartekltg wrote:
>> Jeśli tak jest to imho kiepskie to jest, fajnie byłoby, gdyby python
>> wyrównywał podaną wartość do najbliższej pełnej reprezentacji bajtowej, w
>> tym wypadku do jednego bajta i tak też dokonywał operacji negacji, czyli w
>
> To by był koszmar. Nagecja 255 daje 0, a negacja 256
> 1111111011111111b
No i tak dokładnie powinno być, czemu koszmar? Kalkulator windows tak to
właśnie przedstawia. Imho logiczne.
--
howgh
szemrany
"Trzeba z żywymi naprzód iść, po życie sięgać nowe,
a nie w uwiędłych laurów liść z uporem stroić głowę"