najprościej. Dzielenie w U2 co prawda jest możliwe, ale
dość kłopotliwe.
ja bym Cię jednak pociągnął za język, mógłbyś mi powiedzieć
jak to się robi własnie w U2 bez zamiany...
przynajmniej zarysować metodę postępowania... ;o)
Problem będzie z resztą, o ile chcemy mieć ujemne reszty.
a to dopiero ciekawe, a jak koduje się resztę w U2?
tak samo jak binarnie?
no i może jednak ktoś oszczędziłby mi trudu poszukiwań i
rozważania dżołków w językach obcych i napisał jak koduje
się liczby w typie float?
a przy okazji, istnieje jakaś "pozycja" o algorytmach
obliczeniowych? chodzi o obliczanie różnych rzeczy np. sin,
pierwiastek, log, exp? nie o żadnych tam sortowaniach czy
interpolacji... ;o)
bezrobotny wrote:
| najprościej. Dzielenie w U2 co prawda jest możliwe, ale dość
| kłopotliwe.
ja bym Cię jednak pociągnął za język, mógłbyś mi powiedzieć jak to się
robi własnie w U2 bez zamiany...
W U2 najprostrzy algorytm to odejmowanie w pętli ze zliczniem ilosci
odjęć, po przekroczeniu zera dodaje sie raz dzielnik i zmniejsza licznik
iteracji i tak się otrzymuj wynik.
| Problem będzie z resztą, o ile chcemy mieć ujemne reszty.
a to dopiero ciekawe, a jak koduje się resztę w U2?
tak samo jak binarnie?
A przypadkiem reszta nie jest zawsze dodatnia (-2 / 7 = -1 i reszta 5 ?)?
A wtedy to nie ma różnicy jak zapisywać, bo czy to U2, czy U1, czy też bez
znaku to bedzie tak samo Głowy jednak za to nie dam. Musisz sprawdzic jak
jest zdefiniowane to w jakiejś encyklopedii matematycznej.
no i może jednak ktoś oszczędziłby mi trudu poszukiwań i rozważania
dżołków w językach obcych i napisał jak koduje się liczby w typie float?
Najbardziej znaczący bit na znak, kolejne bity na mantysę, najmniej
znaczące bity na wykadnik. Typ float jest opisany np tu:
http://stevehollasch.com/cgindex/coding/ieeefloat.html
A np dla liczb 10-bitowych:
0 1010010 101 = + 82 * 2^5
a przy okazji, istnieje jakaś "pozycja" o algorytmach obliczeniowych?
chodzi o obliczanie różnych rzeczy np. sin, pierwiastek, log, exp?
Pozycji nie znam żadnej, ale ja bym liczył z rozwinięcia w szereg
Maclaurina.
wrzuc te pytania
1.Pytania z Języka C opublikowane
2.Co rozumiemy pod pojęciem "architektura komputerów"
3.Architektura według Neumanna
4.Magistrala.Systemy magistralowe
5.Metody przedstawiania algorytmów
6.Zasady tworzenia schematów blokowych do tworzenia algorytmów
7.Schematy podstawowe algorytmów: sumowanie ciągów i szeregów
8.
: obliczanie iloczynów i potęg
9.
: szukanie wartości najmniejszej i największej
10.
: obliczanie wartości wielomianu, schemat Hornera
11.Pojęcie typu danych
12.Kod ASCII
13.Systemy pozycyjne naturalne
14.Konwersja liczb całkowitych do systemu o innej podstawie
15.Konwersja części ułamkowej do systemu o innej podstawie
16.Metody reprezentacji danych całkowitych
17.System U2 reprezentacji danych
18.Kodowanie liczb w systemie "+N"
19.Standard zmiennoprzecinkowy IEEE 754
20.Formaty zmiennoprzecinkowe IEEE 754
21.Wzorce kodów obiektów standardu IEEE 754
Piotr Wyderski wrote:
| sprawdzałeś wszystkie działające mainframe?
Nie musiałem, po prostu znam kodowania maszynowe
zmiennych całkowitych stosowane od lat 50-tych. Z
trzech najistotniejszych, czyli U2, znak-moduł i U1
to akurat sprawdzałem, ale i tak może trafić się egzotyczna i do tej
pory działająca platforma na której nie każda binarna reprezentacja jest
ważną liczbą całkowitą ze znakiem
B.
Kamil Ch. wrote:
Może i jest 30 różnych kodowań, ale najczęściej stosowane są chyba:
- znak-moduł
- U1
- U2
Tak, w procesorach ogolnego przeznaczenia sa to najczesciej
spotykane kodowania, lecz stosuje albo stosowalo sie wiele
innych. Przyklady:
- cala rodzina kodow wagowych, m.in np. kod Aikena 2421,
kod BCD;
- rodzina kodow "m z n", jak np. kod dwupiatkowy (biquinary) itp.
- kody celowo niejednoznaczne;
- kody jednoznaczne o innych podstawach, np. (-2)^n,
nie wymagajace pamietania bitu znaku;
- kody modularne, np. polegajace na pamietaniu liczby
jako wektora wykladnikow i wyznaczania wartosci liczby
jako sumy poteg kolejnych liczb pierwszych. Np.: [1,3,2]
oznacza 2^1 + 3^3 + 5^2 = 54. Ta i podobne jej reprezentacje
szczegolnie dobrze nadaje sie do zrownoleglenia, a mnozenie
i dzielenie sa w niej znacznie szybsze, niz dodawanie i odejmowanie.
- inne kody, ktorych teraz nie opisze, bo mi sie spieszy. :-)
Pozdrawiam
Piotr Wyderski
Geo wrote:
Chodzi o to, aby dla każdej liczby całkowitej istniała liczba do niej
przeciwna.
Nie, chodzi o to, że C++ nie wymusza kodowania U2, i dopuszcza
m.in. kodowanie U1 oraz zank-moduł, a one są symetryczne względem
zera (zer... :-)) i nie pozwalają na zapisanie liczby -32768.
Pozdrawiam
Piotr Wyderski
Diable wrote:
Witam !
mam pytanie dotyczace raczej typow zmiennych niz samego delphi ale...
chodzi o liczby ujemne (integer, real) i ich reprezentacje w pamieci
(jak system rozroznia liczby ujemne)
Diable...
Najstarszy bit to bit znaku. Dla Integer jest to bit 32 (31 liczac od
0). Reszta liczby kodowana jest w U2. W rzeczywistych jest:
bit znaku cechy, cecha, bit znaku mantysy, mantysa. Nie dam glowy ale
zarowno cecha (o ile mozna w tym wypadku mowic o kodowaniu) jak i
mantysa sa kodowane w U1.
Co do tego _co_to_jest_ U1 i U2, polecam literature - "Technika
cyfrowa", po prostu tekst na ten temat bylby ciut dlugi.
Z powazaniem,
Milosz A. Krajewski
Yoop napisał(a):
najprostsza metoda jaka mi przyszla do glowy tak na szybcika :)
function cnt(N){return N.toString(2).match(/1/g).length}
N - podana liczba naturalna
Hehe, mi to przyszło na myśl na minucie po przeczytaniu treści zadanka.
Wstydziłem się zapodać bo mam silne przeczucie że to na bitach tzreba
operować...
w zasadzie moze to byc rowniez liczba calkowita, choc nie jest takie
oczywiste, zalezy to od tego jak bysmy chcieli kodowac minus (a jak
koduje go metoda toString())
toString(2) da ci po prostu minus na poczatku, ale "normalnie" liczba
kodowana jest w 32 bitowym kodzie U2 (o czym można się przekonać za
pomoca operatora bezznakowego przesunięcia w prawo. Dobrze gadom?
[...]
toString(2) da ci po prostu minus na poczatku, ale "normalnie" liczba
kodowana jest w 32 bitowym kodzie U2 (o czym można się przekonać za pomoca
operatora bezznakowego przesunięcia w prawo. Dobrze gadom?
dobrze :)
a pokusisz sie o zrobienie "fixa", ktory poda "prawdziwy" wyglad,
zakladajac, ze liczbe kodujemy na 32 bitach? :)
v.
Vax napisał(a):
[...]
| toString(2) da ci po prostu minus na poczatku, ale "normalnie" liczba
| kodowana jest w 32 bitowym kodzie U2 (o czym można się przekonać za pomoca
| operatora bezznakowego przesunięcia w prawo. Dobrze gadom?
dobrze :)
a pokusisz sie o zrobienie "fixa", ktory poda "prawdziwy" wyglad,
zakladajac, ze liczbe kodujemy na 32 bitach? :)
dla ujemnych już mam
(N| 0).toString(2)
Dla dodatnich trzeba tylko dopisać brakujące zera. Mam to jakoś zgrabnie
połączyć i zultrapackować?
Badman wrote:
Kcalc podal dobrze wynik tyle ze w kodzie U2 - kodzie uzupelnien do dwoch,
gdzie zamiana liczby z dodatniej na ujemna polega na zanegowaniu wszystkich
bitow i dodaniu jedynki. Czyli twoje 11 (to bezwzgledne) zostalo tak
potraktowane wlasnie. Poniewaz liczba miala tzw. nieznaczace zera przed
pierwsza jedynka, (0...000001011) to po zaanegowaniu daly jedynki. Jesli
chcialbys teraz te -11 zamienic na liczbe dodatnia - zrob ta sama operacje
- zaneguj wszystkie bity i dodaj jedynke :-)) I zobacz co wyjdzie.
Jest kilka konwencji jesli chodzi o sposoby kodowania liczb - nauczyciel
uczyl Cie o jednej, a Kcalc uzywa drugiej :-)
On Wed, 10 Dec 1997, Jaroslaw Lis wrote:
Tyle ze przy zapisie dwojkowym MOZEMY sie pokusic o pominiecie
tej 'pierwszej 1" w zapisie, i wtedy normalizacja jest konieczna.
Zapis z pominięciem początkowej "1" jest stosowany w typie Real w Pascalu,
a nie jest stosowany w typach z koprocesora Intela.
Tyle ze rownie dobrze mozna by sie umowic ze cecha jest pamietana w
U2, za wyjatkiem wartosci -128 [80h], ktora mowi "cala liczba wynosi
0".
Na dodatkowej wartości cechy, zapisuje się takie rzeczy jak +0, -0, +Inf,
-Inf, NaN (Not a Number). Tak jest zarówno w Intelach jak i w Realu.
Poza tym mantysy na ogół nie koduje się w U2, tylko jako liczba_całkowita
i znak. Ułatwia to np. mnożenie... (normalizację też).
Cechę (wykładnik) koduje się najczęściej jako liczbę całkowitą, od której
trzeba odjąć pewną stałą, żeby otrzymać właściwą cechę. Wtedy 0 oznacza
dodatkowe funkcje, a wartość równa stałej oznacza 0.
_______________________________________________________________________________
Michał Kaczmarczyk mailto:m@iname.com http://student.uci.agh.edu.pl/~kaczmar