Re: shame on MISRA



Dan Henry wrote:
CBFalconer <cbfalconer@xxxxxxxxx> wrote:
Dan Henry wrote:
CBFalconer <cbfalconer@xxxxxxxxx> wrote:
Dan Henry wrote:
CBFalconer <cbfalconer@xxxxxxxxx> wrote:

... snip ...

Wrong. C representation may be sign/magnitude or 1's complement.

2's comp: -1 ---> -0x0001 ---> 0xffff
~ 1 ---> ~0x0001 ---> 0xffff (note NOT sign)
~ 0 ---> ~0x0000 ---> 0xffff "
1's comp: -1 ---> -0x0001 ---> 0xffff
~ 1 ---> ~0x0001 ---> 0xfffe (note NOT sign)
~ 0 ---> ~0x0000 ---> 0xffff "
or ~ 0 ---> ~0xffff ---> 0x0000 "
sign mag: -1 ---> -0x0001 ---> 0xffff
~ 1 ---> ~0x0001 ---> 0xfffe (note NOT sign)
~ 0 ---> ~0x0000 ---> 0xffff "

because of the rules for bringing unsigned into range.

~1? I read Marcin to be asking whether ~0 won't set all 1s.

See the additions above. Only -1 always returns 0xffff.

Isn't the integer constant 0 (lacking the unary - operator) in a
1's complement system positive zero, not negative zero? Doesn't
your second ~0 example actually represent ~-0?

In 1's complement -0 is equal to +0.

Right, but I am wondering about the predictability of the
underlying bit patterns.

Are you saying that in 1's complement the integer constant 0 could
have the bit pattern for +0 (all 0's) *or* the bit pattern for -0
(all 1's) and that using the unary - operator on the integer
constant 0 can yield either all 1's or all 0's -- that my
memset(&object, 0, sizeof object) is equally likely to zero all
bits as set all bits of the memory that object occupies?

Exactly.

--
<http://www.cs.auckland.ac.nz/~pgut001/pubs/vista_cost.txt>
<http://www.securityfocus.com/columnists/423>
<http://www.aaxnet.com/editor/edit043.html>
<http://kadaitcha.cx/vista/dogsbreakfast/index.html>
cbfalconer at maineline dot net



--
Posted via a free Usenet account from http://www.teranews.com

.



Relevant Pages

  • Re: A ones complement sanity check, please
    ... representation of integer constant 0 and now how to zero memory ... errors in the 1's complement -1 and sign magnitude -1 representations. ... My questions are about 1's complement representation of the integer ...
    (comp.lang.c)
  • A ones complement sanity check, please
    ... representation of integer constant 0 and now how to zero memory ... errors in the 1's complement -1 and sign magnitude -1 representations. ... My questions are about 1's complement representation of the integer ...
    (comp.lang.c)
  • Re: shame on MISRA
    ... 1's complement system positive zero, ... In 1's complement -0 is equal to +0. ... Are you saying that in 1's complement the integer constant 0 could ... memory that object occupies? ...
    (comp.arch.embedded)
  • Re: Logicals converted to integers during reading
    ... Gary Scott wrote: ... single instruction that does the expression ... is true and zero is false. ... Why -1 instead of +1 if you allow ones complement (all bits one ...
    (comp.lang.fortran)
  • Re: Logicals converted to integers during reading
    ... single instruction that does the expression ... is true and zero is false. ... Why -1 instead of +1 if you allow ones complement (all bits one ... My other proposal is to not have an intrinsic conversion at all. ...
    (comp.lang.fortran)