弱弱的问下我想取一个int型的最高1位,如何取?
若取中间某几位的值又怎么取?

解决方案 »

  1.   

    int i=1234;byte byTemp = i&0xf000;
      

  2.   

    int bit[100];
    int p = 0;
    while (n != 0)
    {
       bit[p] = n % 10;
       n = n / 10;
       p++;
    }想取任何位都可以。
      

  3.   

    int型在32位机器上是四字节,在64位机器上将是8字节。
    取其中的某几位,基本操作就是进行位移,先左移,后右移。
    比如32位int,你要去第5-8位(这里假设最低位为0,最高位为31),那么操作就是:
    int n;
    n << (31-8);
    n >> 31- (8-5);
      

  4.   

    用与、或、非、位移等操作来取。
    如: x >> 31 就是去取最高的值。
      

  5.   


    sorry, 应该是i &  0x1000;
      

  6.   

    汗, 我发现自己原来越差了 , 呵呵, 净在灌水,i & 0xA000;
      

  7.   

    我写了个函数可以判断整数的第几位是1还是0
    int类型是32位的,我的函数默认最高位是第1位,最第位是32位
    #include "stdafx.h"
    #include <stdio.h>
    int CheckInt(int i,int wei);
    int main(int argc, char* argv[])
    {
    int i=100;
    int wei=1;
    CheckInt(i,wei);
    i=-100;
    wei=1;
    CheckInt(i,wei);
    i=1;
    wei=32;
    CheckInt(i,wei);
    i=2;
    wei=32;
    CheckInt(i,wei);
    return 0;
    }
    int CheckInt(int i,int wei)
    {
    int j;
    if(wei>0 && wei<33)
    {
    j=i<<(wei-1);
    __asm
    {
    mov eax,j
    and eax,0x80000000
    jnz __fushu
    }
    printf("%d的第%d位为0\n",i,wei);
    goto endfun;
    __fushu: printf("%d的第%d位为1\n",i,wei);

    }
    else
    {
    printf("你输入的位数不在范围内。\n");
    }
    endfun: return 1;
    }