原帖由 super00tiger 于 2007-4-25 18:34 发表
求救怎样可以得到一个unsigned long类型对象的实际占用位数?
一个unsigned long 占32位,假如定义一个unsigned long
unsigned long un=260;
则这个un实际只占9位,求救怎样才能判断一个unsigned long类型 ...
原帖由 langue 于 2007-4-25 18:39 发表
对于 32 位机型,这个 un 应当占用 32 个二进制位。
.
原帖由 langue 于 2007-4-25 18:38 发表
#define BITS_PER_BYTE 8 /* on an i386, this is by default 8 */
#define SIZE_ULONG (sizeof(unsigned long) * BITS_PER_BYTE)
原帖由 super00tiger 于 2007-4-25 18:43 发表
32位机确实占32位,但是一个假若一个unsigned long 只是2的30的次方的话,则高两位为0,实际占30位,我想问的是怎样求出一个unsigned long的实际占位数,即这个例子怎样求出只占30位?
一楼的
sizeof求出的是unsigned long这个类型的实际占位数
原帖由 super00tiger 于 2007-4-25 18:43 发表
32位机确实占32位,但是一个假若一个unsigned long 只是2的30的次方的话,则高两位为0,实际占30位,我想问的是怎样求出一个unsigned long的实际占位数,即这个例子怎样求出只占30位?
原帖由 caijimin 于 2007-4-25 18:47 发表
老大,你是不是说32个bit里把前面是0的去掉,看剩下多少位?
自己写个小函数很容易实现
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |