char->kody key borlnada|logika binarna|sieć

0

przepraszam za taki skrótowy temat, ale mi się nie chchciało trzech pisać, więc:

  1. Czy jest jakaś funkcja zamianiająca char na kod klawisza w kodzie borlanda? Tzn. int('A') = 97, a w ASCII A=65... Albo chociaż jak to policzyć?

  2. Jakie (i czy) są odpowiedniki dodawania, odejmowania, dzielenia i mnożenia na kodzie binarnym? Które operanty logiczne (lub ich grupy) je mogą zastąpić? Jeśli można to prośiłbym też o tablicę prawd takich dziwałań..

  3. Czy jest możliwość w c++ nałżyć ogranieczenia na przepustowość sieci? Najlepiej osobno download i upload...

0

Dżizyz Krecik - ale żeś wyskoczył...

Ad.1
int('A') = 65
int('a') = 97

Borland nie wymyślał swoich kodów.

Ad.2
Co rozumiesz poprzez

... na kodzie binarnym?
??
Przecież wszystkie liczy wewnętrznie przechowywane są binarnie :|

0

O MATKO!! Nie wpadłbym, że się wywaliłem na wielkich/małych literach... W życiu bym nie przyuważył błedu... DZIĘKI!

Ad2. Wiem, że są tak przechowywane... Ale mi chodzi o to jakie funkcje logiczne są wykorzystywane przy ich liczeniu (powiedzmy tak jak na kartce OR, XOR, NOR, AND...), bo chcę zrobić tablicę bool powedzmy na 1024 elementy i tak liczyć duże liczby. po prostu jakie funkcje logiczne odpowiadają matematycznym (+ - / *)

0

Noo, to w kwestii pytania 2 zapraszam na wykład z Architektury komputerów. Wtorki o 9:15 na PK :-P Tam tworzymy instrukcje procesora w mikroassemblerze.

Ale to jest tak:

<font color="blue">+</span>
Instrukcja dodawania realizowana jest sprzętowo i nie jest podzielna na mniejsze części.

<font color="blue">-</span>
Odejmowanie realizowane jest w 3 etapach:

  1. negacja odjemnika
  2. dodanie 1 do odjemnika
  3. dodanie odjemnej i zmienionego odjemnika

<font color="blue">*</span>
Mnożenie realizowane jest w n cyklach w których następuje n przesunięć i m operacji dodawania.
n - liczba bitów w liczbie
m - liczba jedynek w jednym ze składników sumy

Algortym opisał Kapustka tutaj:
http://4programmers.net/view.html?id=199#mnożenie_chłopów

<font color="blue">/</span>
Dzielenie realizowane jest "podobnie" jak mnożenie, ale jest deczko trudniejsze i nie chce mi się tego przepisywać z wykładów. Na pewno na sieci znajdziesz.

0

Dobra... z dodawaniem sobie już poradziłem (metoda: kartka i pióro do ręki i metoda na porównywanie wyników z czynnikami...) i ręcznie liczyłem już nawet do 30 bitowych. (łatwiej niż normalne liczenie w dziesiętnym - w dwójkowym dużo szybciej)

Ale mam problem...
Wiem, że kolejne pozycje w systemie dziesiętnym są to (j100)+(d10</sup>1)+(s102)... A w binarnych (j2</sup>0)+(d21)+(s2</sup>2)...

I według tej metody próbowałem znaleźć sposób na przeliczanie liczb dziesiętnych na binarne, opierając się na pozycji liczby... Ale fiasko (na razie). Tymczasem ma ktoś może pomysł jak przeliczyc na ciągbinarny liczbę mającą duuuużo liczb po przecinku??

Tzn. jak zamienić na ciąg binarny liczbę zapisaną jako string...

PS> duuuużo = kilka(naście) tysięcy liczb po przecinku...

0

Zamiana liczby całkowitej na binarną: dzielenie przez dwa. Kolejne reszty są cyframi zaczynając od przecinka i lecąc w lewo.
Zamiana liczby ułamkowej na binarną: mnożenie przez dwa. Kolejne przekroczenia 1 są cyframi liczby binarnej od przecinka w prawo.
Przykład:
123,456 = 123 + 0,456
123/2 = 61 i 1
61/2 = 30 i 1
30/2 = 15 i 0
15/2 = 7 i 1
7/2 = 3 i 1
3/2 = 1 i 1
1/2 = 0 i 1
Wynik dla części całkowitej:
1111011

0,4562 = 0,912 + 0
0,912
2 = 0,824 + 1
0,8242 = 0,648 + 1
0,648
2 = 0,296 + 1
0,296*2 = 0,592 + 0
...
Więc część ułamkowa:
0,01110...

Całość:
1111011,01110...

0

Masz rację...
Ale ta liczba ma kilka tysięcy miejsc dziesiętnych! Nie możesz jej tak sobie podzielić przez 2 :(

0

Masz rację...
Ale ta liczba ma kilka tysięcy miejsc dziesiętnych! Nie możesz jej tak sobie podzielić przez 2 :(

Dzielenie przez 2 jest równoważne przesunięciu bitowemu w prawo o 1 bit. Jest to bardzo szybkie.

Możesz do tego wykorzystać instrukcje Assemblera:
dla n bajtów:
1 x shr
(n-1) x rcr

poczynając od najstarszego bitu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1