There is certainly no reason to #define TI_ZN to two different values (unless there are conditional tests to choose one setting over another based on the compilation environment) unless you're trying to confuse someone reading your source code.
Sometimes it makes sense when defining masks for bit fields or defining various parts of a value that contains bit fields to make it easier to understand the individual fields being set. For example you might find something like:
on some systems in <sys/stat.h>.
This User Gave Thanks to Don Cragun For This Post:
I think it's mostly semantics. If you use the shift operator, you emphasise on a certain bit pattern at a specific bit offset in a variable. In Don Cragun's example, the emphasis is on the the fact, that the values 017, 01, ... are stored at an offset of 12 bits from the least significant bit of the variable.
If you use the shift operator on variables, it is faster than a multiplication in most cases.
Hi Don cragun, its exactly like this
#define TI_ZN_FAILOVER (1 << 1) /* bit 1 */
#define TI_ENT_PORT (1 << 2) /* bit 2 */
#define TI_ENT_WWN (1 << 3) /* bit 3 */
so why can t they assign like below
#define TI_ZN_FAILOVER 2 /* bit 1 */
#define TI_ENT_PORT 4 /* bit 2 */
#define TI_ENT_WWN 8 /* bit 3 */
Hi Don cragun, its exactly like this
#define TI_ZN_FAILOVER (1 << 1) /* bit 1 */
#define TI_ENT_PORT (1 << 2) /* bit 2 */
#define TI_ENT_WWN (1 << 3) /* bit 3 */
so why can t they assign like below
#define TI_ZN_FAILOVER 2 /* bit 1 */
#define TI_ENT_PORT 4 /* bit 2 */
#define TI_ENT_WWN 8 /* bit 3 */
They could - it's just a matter of style. Using '(1 << 3)' makes it explicitly clear that what you're dealing with a bit. They both mean the same thing to the compiler, it's just what they signal to humans reading the code that differs.
This User Gave Thanks to JohnGraham For This Post:
Hello everyone.
I bought a dell laptop (XPS M1330) online which came without a hard drive. There is a Windows Vista Ultimate OEMAct sticker with product key at the bottom case. I checked dell website (here) for this model and it says this model supports both 32 and 64-bit version of Windows... (4 Replies)
Hi,
Here is the issue. From the program snippet I have Base: 0x1800000000, Size: 0x3FFE7FFFFFFFF which are of 40 and 56 bits. SO I used use bignum to do the math but summing them up I always failed having correct result.
perl interpreter info,
perl, v5.8.8 built for... (0 Replies)
Hi.
I need to migrate the whole unix environment from a Unix mp-ras 32 bit to a Linux Suse 64 bit.
1) can i use cpio to copy the data?
2) can i just copy the users from unix to linux or do i have to create them by hand
3) are there any other concerns i should worry about?
thanx (1 Reply)
Hi all,
I'm looking to cover a corner case for an upcoming test cycle. Is there a way to boot a RedHat Advanced Server 4 (update 3) installed on a Power PC machine to use a 32 bit kernel? This would be similar to what is done here -> https://www.unix.com/aix/26204-aix-platform.html
I've done... (0 Replies)