Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bitwise Not Operator (~ in C) with regards to little endian and big endian

This is in relation to a homework assignment but this is not the homework assignment.

I'm having difficultly understanding if there is a difference on how the bitwise not (~ in C) would affected signed int and unsigned int when compiled on a big endian machine vs. a little endian machine.

Are the bytes really "backwards" and if so does the bitwise not (and other operators) cause different resulting ints be produced depending on the machine type?

While we are at it, is the answer the same for each of the bitwise operators in C or does it heavily depend?

The operators I'm referring to are:

~  /* bitwise Not */
&  /* bitwise And */
|  /* bitwise Or */
^  /* bitwise Exclusive-Or */

Thank you in Advance!

Update: In reading my responses thus far, I feel compelled to ask if the bitwise not operator affects the sign bit on a signed int. I'm afraid I've been a bit confused on this part as I forgot about all that stillyness. Adam seems to be stating that all values are treated as unsigned. Is the sign-bit reapplied or does the once signed value become unsigned?

like image 418
Frank V Avatar asked Dec 29 '22 21:12

Frank V


2 Answers

The bitwise operators and logical operators all operate identically in big- and little-endian machines. Likewise, they also operator identically on signed and unsigned data: the result is as if everything were unsigned. So, if x and y are signed integers, then ~x equals (int)(~((unsigned int)x) and x & y equals (int)(((unsigned int)x) & ((unsigned int)y), and so on for all of the other operators.

like image 163
Adam Rosenfield Avatar answered Jan 16 '23 06:01

Adam Rosenfield


As @Adam's answer says, since these operators go bit-by-bit, byte orders don't really matter! For example, (~x) == (-x-1) for every signed integer x, no matter the length of x in bytes, AND no matter the machine's endianness (as long as it uses two's-complement arithmetic -- are there ANY left that don't?-)

like image 31
Alex Martelli Avatar answered Jan 16 '23 04:01

Alex Martelli