gia na anapsoyn ligo ta aimata :-)

Giannis Papadopoulos ipapadop at inf.uth.gr
Sat Nov 12 13:58:24 EET 2005


Giorgos Keramidas wrote:
> On 2005-11-12 01:06, Giannis Papadopoulos <ipapadop at inf.uth.gr> wrote:
> 
>>Giorgos Keramidas wrote:
>>
>>>Όταν υπάρχουν k bits διαθέσιμα για την αναπαράσταση ενός ακέραιου
>>>αριθμού σε μηχάνημα που χρησιμοποιεί αριθμητική συμπληρώματος ως
>>>προς 2, ποιες τιμές μπορούμε να χρησιμοποιήσουμε;
>>>
>>>Η τιμή exp(2, k) είναι μέσα σε αυτές;
>>>
>>>Η τιμή (-1 * exp(2, k)) είναι μέσα σε αυτές;
>>
>>Αν n τα bits τότε int \in [-(2^n), (2^n)-1]
> 
> 
> α. Οταν έχουμε δηλαδή 32 bits (uint32_t), ποιά από τις παρακάτω τιμές
> λοιπόν προκαλεί overflow, και γιατί;
> 
>         #define	TESTNUM1	-(1 << 31)
> 	#define	TESTNUM2	-2147483648
> 
> β. Οταν έχουμε 31 bits?
> 
> γ. Ποιός θέλει να πάμε μαζί να δείρουμε τον Φώτη που ακόμα και μετά από
> 10 χρόνια επιμένει πως φταίει η C που δεν είναι προσεκτικοί οι
> προγραμματιστές; :P

1. Πρέπει να σταματήσω να γράφω κώδικα ή οτιδήποτε του μοιάζει μετά τις 
24:00...
2. Είμαι απαράδεκτος...

α. Το -2147483648 = - 2^31 είναι ΟΚ.

1<<31 = 2147483648 ή 0x8 0x0 0x0 0x0 0x0 0x0 0x0 0x0. Άμα βάλεις και - 
καταλήγεις στο ίδιο αλλά με integer overflow.

β. Και τα δύο.



More information about the Linux-greek-users mailing list