Sponsored Content
Full Discussion: bit manipulation
Top Forums Programming bit manipulation Post 302716129 by Don Cragun on Tuesday 16th of October 2012 03:34:48 AM
Old 10-16-2012
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:
Code:
/* File type */
#define S_IFMT          (017<<12)         /* file type mask */
#define S_IFIFO         (001<<12)         /* named pipe (fifo) */
#define S_IFCHR         (002<<12)         /* character special */
#define S_IFDIR         (004<<12)         /* directory */
#define S_IFBLK         (006<<12)         /* block special */
#define S_IFREG         (010<<12)         /* regular */
#define S_IFLNK         (012<<12)         /* symlink */
#define S_IFSOCK        (014<<12)         /* socket */

on some systems in <sys/stat.h>.
This User Gave Thanks to Don Cragun For This Post:
 

5 More Discussions You Might Find Interesting

1. Programming

copying or concatinating string from 1st bit, leaving 0th bit

Hello, If i have 2 strings str1 and str2, i would like to copy/concatenate str2 to str1, from 1st bit leaving the 0th bit. How do i do it? (2 Replies)
Discussion started by: jazz
2 Replies

2. Red Hat

boot the 32 bit kernel on a 64 bit PPC Linux machine?

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)
Discussion started by: philrau
0 Replies

3. UNIX for Advanced & Expert Users

migrating unix mp-ras 32 bit to linux suse 64 bit

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)
Discussion started by: mrodrig
1 Replies

4. Shell Programming and Scripting

How to handle 64 bit arithmetic operation at 32 bit compiled perl interpreter?H

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)
Discussion started by: rrd1986
0 Replies

5. Windows & DOS: Issues & Discussions

Which version of Windows Vista to install with a product key? 32-bit or 64-bit?

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)
Discussion started by: milhan
4 Replies
BITSTRING(3)						   BSD Library Functions Manual 					      BITSTRING(3)

NAME
bit_alloc, bit_clear, bit_decl, bit_ffc, bit_ffs, bit_nclear, bit_nset, bit_set, bitstr_size, bit_test -- bit-string manipulation macros SYNOPSIS
#include <bitstring.h> bitstr_t * bit_alloc(int nbits); bit_clear(bit_str name, int bit); bit_decl(bit_str name, int nbits); bit_ffc(bit_str name, int nbits, int *value); bit_ffs(bit_str name, int nbits, int *value); bit_nclear(bit_str name, int start, int stop); bit_nset(bit_str name, int start, int stop); bit_set(bit_str name, int bit); bitstr_size(int nbits); bit_test(bit_str name, int bit); DESCRIPTION
These macros operate on strings of bits. The macro bit_alloc() returns a pointer of type ``bitstr_t *'' to sufficient space to store nbits bits, or NULL if no space is available. The macro bit_decl() allocates sufficient space to store nbits bits on the stack. The macro bitstr_size() returns the number of elements of type bitstr_t necessary to store nbits bits. This is useful for copying bit strings. The macros bit_clear() and bit_set() clear or set the zero-based numbered bit bit, in the bit string name. The bit_nset() and bit_nclear() macros set or clear the zero-based numbered bits from start to stop in the bit string name. The bit_test() macro evaluates to non-zero if the zero-based numbered bit bit of bit string name is set, and zero otherwise. The bit_ffs() macro stores in the location referenced by value the zero-based number of the first bit set in the array of nbits bits refer- enced by name. If no bits are set, the location referenced by value is set to -1. The macro bit_ffc() stores in the location referenced by value the zero-based number of the first bit not set in the array of nbits bits ref- erenced by name. If all bits are set, the location referenced by value is set to -1. The arguments to these macros are evaluated only once and may safely have side effects. EXAMPLES
#include <limits.h> #include <bitstring.h> ... #define LPR_BUSY_BIT 0 #define LPR_FORMAT_BIT 1 #define LPR_DOWNLOAD_BIT 2 ... #define LPR_AVAILABLE_BIT 9 #define LPR_MAX_BITS 10 make_lpr_available() { bitstr_t bit_decl(bitlist, LPR_MAX_BITS); ... bit_nclear(bitlist, 0, LPR_MAX_BITS - 1); ... if (!bit_test(bitlist, LPR_BUSY_BIT)) { bit_clear(bitlist, LPR_FORMAT_BIT); bit_clear(bitlist, LPR_DOWNLOAD_BIT); bit_set(bitlist, LPR_AVAILABLE_BIT); } } SEE ALSO
malloc(3) HISTORY
The bitstring functions first appeared in 4.4BSD. BSD
July 19, 1993 BSD
All times are GMT -4. The time now is 08:26 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy