Sujet : Re: how cast works?
De : dan (at) *nospam* djph.net (Dan Purgert)
Groupes : comp.lang.cDate : 07. Aug 2024, 21:00:28
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <slrnvb7kis.28a.dan@djph.net>
References : 1
User-Agent : slrn/1.0.3 (Linux)
On 2024-08-07, Thiago Adams wrote:
How cast works?
Does it changes the memory?
For instance, from "unsigned int" to "signed char".
Is it just like discarding bytes or something else?
[...]
I don't know what happens when you're changing datatype lengths, but if
they're the same length, it's just telling the compiler what the
variable should be treated as (e.g. [8-bit] int to char)
>
I also would like to understand better signed and unsigned.
There is no such think as "signed" or "unsigned" register, right?
"Signed" just means the first bit indicates negative.
So an "unsigned" 8 bit integer will have the 256 values ranging from
0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 = 0
(0b00000000)
TO
128 + 64 + 32 + 16 + 8 +4 + 2 + 1 = 255
(0b11111111)
Whereas a "signed" 8 bit integer will have the 256 values ranging from
(-128) + 0 + 0 + 0 + 0 + 0 + 0 + 0 = -128
(0b10000000)
TO
0 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 127
(0b01111111)
At least in two's compliment (but that's the way it's done in C)
How about floating point?
Floating point is a huge mess, and has a few variations for encoding;
though I think most C implementations use the one from the IEEE on 1985
(uh, IEEE754, I think?)
-- |_|O|_| |_|_|O| Github: https://github.com/dpurgert|O|O|O| PGP: DDAB 23FB 19FA 7D85 1CC1 E067 6D65 70E5 4CE7 2860