Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Ben Bacarisse <ben.usenet@bsb.me.uk> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: What is truncation for (singed) integer in C ? |
| Date | 2015-09-19 21:28 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <87twqq9msk.fsf@bsb.me.uk> (permalink) |
| References | <6f66f235-1b11-4b0c-b2d8-c49ac3eac78e@googlegroups.com> |
fl <rxjwg98@gmail.com> writes: > I see the following on wikipedia and doubt about negative integer when > truncating. > > https://en.wikipedia.org/wiki/Type_conversion > /////// > Data can be lost when floating-point representations are converted to integer > representations as the fractional components of the floating-point values > will be truncated (rounded towards zero) > ....... > > I agree for positive integer, truncation in C is towards 0. But for > negative integer, it looks like away from '0'. For example, for a > unsigned char 83H, Something is already wrong here. You say "but for negative integer" and the then give an example of "unsigned char 83H". unsigned char 83H is not negative -- it's unsigned. > one bit (LSB) truncation result will be 41H, whose non-truncation value > (8-bit) is equal to 82H. The real value of 82H plus '1' is 83H. That is, > 82H < 83H. For these negative numbers, it is not rounded towards zero. > > Is the above link not talking the same thing with my understanding? I think you are talking here about integer division by two. The article you cite is about converting floating point values to integers so there is no direct connection. The rules about integer division have changed between old C (ANSI C or ISO C from 1990) and modern C (C99 and later) but in modern C, the result is indeed truncated (rounded towards zero). To use your example, signed char c = -125; will give c the bit-pattern 83 in hex. Note that I can't say c == 0x83 because that is not correct in C -- do you know why? Now c/2 is -125/2 which, truncated towards zero is -62. That will "look like" C2 in hex, but, again, c/2 == 0xC2 is not correct in C. -- Ben.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
What is truncation for (singed) integer in C ? fl <rxjwg98@gmail.com> - 2015-09-19 12:25 -0700
Re: What is truncation for (singed) integer in C ? fir <profesor.fir@gmail.com> - 2015-09-19 12:55 -0700
Re: What is truncation for (singed) integer in C ? fir <profesor.fir@gmail.com> - 2015-09-19 13:20 -0700
Re: What is truncation for (singed) integer in C ? Geoff <geoff@invalid.invalid> - 2015-09-19 13:05 -0700
Re: What is truncation for (singed) integer in C ? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-09-19 21:28 +0100
Re: What is truncation for (singed) integer in C ? Tim Prince <tprince@computer.org> - 2015-09-19 16:38 -0400
Re: What is truncation for (singed) integer in C ? James Kuyper <jameskuyper@verizon.net> - 2015-09-19 16:52 -0400
Re: What is truncation for (singed) integer in C ? Keith Thompson <kst-u@mib.org> - 2015-09-19 13:45 -0700
Re: What is truncation for (singed) integer in C ? James Kuyper <jameskuyper@verizon.net> - 2015-09-19 16:46 -0400
Re: What is truncation for (singed) integer in C ? Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-09-19 16:47 -0400
Re: What is truncation for (singed) integer in C ? Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2015-09-19 22:55 -0600
Re: What is truncation for (singed) integer in C ? James Kuyper <jameskuyper@verizon.net> - 2015-09-20 10:54 -0400
Re: What is truncation for (singed) integer in C ? Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2015-09-20 10:11 -0600
csiph-web