TheOperatori matematici
    Il "Quarto" fuso ] The 4th Time Zone ]   


 

Introduzione
OperazioniInput/Output
TheOperatori matematici
Operatori dello stack
Altri operatori
Colon definition
Strutture di controllo
Strutture condizionali
Costanti e variabili
Altre parole
Uso dell'editor
Messaggi di errore


                                   

[ Indice ][ Indietro ][ Avanti ]

+

Somma i due numeri in cima allo stack e lascia il risultato come un singolo numero. 

p.es.      1 2 + . <CR>

stampa sullo schermo il valore di 1+2=3. Nota che i due numeri in cima allo stack sono eliminati dallo stack e vengono sostituiti da un singolo numero. Ciò è vero per la maggior parte dei comandi del Forth, nel senso che vengono tolti dallo stack i valori richiesti dall'operazione da eseguire e il risultato viene posta in cima allo stack.

In questi esempi lo stack viene rappresentato con:
N1 = numero in cima allo stack (il primo ad essere rimosso)
N2 = secondo numero sullo stack (il secondo ad essere rimosso)
N3 = terzo numero sullo stack (il terzo ad essere rimosso)

Per dimostrarlo, poniamo tre numeri sullo stack con:

HEX 10FA 0019 1F47 <CR>

Lo stack apparirà così:

1F47

TOS

(Top Of Stack)

0019

01fa

Nota la proprietà dello stack che funziona secondo la regola Last In First Out (LIFO), quindi abbiamo:

N1 = 1F47
N2 =
0019
N3 =
01FA

Se digitiamo:

CR . CR . CR . CR <CR>

otteniamo

1F47
0019
01FA

Riassumiamo la spiegazione sugli operatori matematici

-

Sottrae il numero in cima allo stack dal secondo numero sullo stack e lascia il risultato come il numero sulla cima, cioè N1 = N2 – N1.

p.es.            DECIMAL 7 11 - . <CR>

stamperà –4 poiché lo stack conterrà 

N1

11

TOS (Top Of Stack)

N2

7

prima della sottrazione, e

N1

-4

TOS (Top Of Stack)

dopo la sottrazione.

*

Moltiplica i due numeri in cima allo stack e lascia il risultato sulla cima dello stack, cioè N1 = N1 * N2.

p.es.            DECIMAL 140 20 * . <CR>

stamperà 2800.

/

Divide il secondo numero sullo stack con il primo numero sullo stack

p.es.            DECIMAL 1000 500 / . <CR>

stamperà 2.

MAX

Lascia il massimo tra i due numeri in cima allo stack.

p.es.      371 309 MAX . <CR>

stamperà 371.

MIN

Lascia il minimo tra i due numeri in cima allo stack.

p.es.      371 309 MAX . <CR>

stamperà 309.

ABS

Lascia il valore assoluto del numero in cima allo stack come un numero senza segno, cioè N1=abs(N1)

p.es.      47 ABS . <CR>

stamperà 47

            -47 ABS . <CR>     

stamperà 47.

MINUS or NEGATE

Cambia il segno del numero in cima allos tack cioè N1 = -N1

e.g.      418 MINUS  . <CR>

stamperà -418

            -418 MINUS  . <CR>

stamperà 418.

1+

Aggiunge 1 al numero in cima allo stack cioè N1 = N1 + 1

2+

Aggiunge 2 al numero in cima allos tack cioè N1 = N1 + 2

1-

Sottrae 1 al numero in cima allos tack, cioè N1 = N1 - 1

2-

Sottrae 2 al numero in cima allo stack, cioè N1 = N1 – 2

MOD

Lascia il resto della divisione N2 / N1 in cima allo stack, con lo stesso segno di N2.

p.es.      17 3 MOD . <CR>

stamperà 2 (17 / 3 = 5 con resto 2).

/MOD

Lascia sullos tack il resto e il quoziente di N2/N1 in modo che il quoziente sia il numero in cima allo stack e il resto sia il secondo.

p.es.      17 3 /MOD . CR . <CR>

stamperà

5

(quotient)

2

(remainder)

[ Indice ][ Indietro ][ Avanti ]


Ultimo aggiornamento: 29-11-2002. Copyright (c) 2000-2002 Matteo Vitturi. 
Per problemi o domande relativamente a questo sito contattare il webmaster
Last update: 11.29.2002. Copyright (c) 2000-2002 Matteo Vitturi.
For problems or questions related to this web please contact the webmaster.
1