我在提取二进制表示的最后4个数字时遇到了问题,我的数字是:,我得到了第一个4,但是我得到了最后四个^:
 # include <stdio.h>
 # include <stdlib.h>
 # define BYTETOBINARYPATTERN "%d%d%d%d%d%d%d%d\n"
 # define BYTETOBINARY(byte)  \
 (byte & 0x80 ? 1 : 0), \
 (byte & 0x40 ? 1 : 0), \
 (byte & 0x20 ? 1 : 0), \
 (byte & 0x10 ? 1 : 0), \
 (byte & 0x08 ? 1 : 0), \
 (byte & 0x04 ? 1 : 0), \
 (byte & 0x02 ? 1 : 0), \
 (byte & 0x01 ? 1 : 0) 
 int main()
 {
    int num = 505;
    PRINTBIN (num);
    //  int result = num & bitwise;
    //PRINTBIN(result);
    // first num;
    int i;
    int bit=0x01;
    int bitwise;
    for (i =0;i<4;i++)
    {
        int bit1=bit<<i;
        bitwise = bit1|bit;
    }
    printf("1:%d\n", bitwise);
    PRINTBIN(bitwise);
    //second num;
    int bitwise1;
    int b0 = 0;
    int bit2;
    for(i=0;i<4;i++)
    {
         bit2 = bit<<(4+i);
         bitwise1 = bit2|b0;    
         PRINTBIN(bit2);
    }
    printf("2:%d\n",bitwise1);
    PRINTBIN(bitwise1);
    return 0;
}发布于 2014-12-03 12:41:05
如果您只想显示4位数,只需使用查找表,因为我们已经知道所有可能的表示形式。如果您想在其他位置显示另外4位数字,只需在num&0x0F之后进行移位,但掩码将是其他值而不是0x0F
const char * bin[16] = {
    "0000",
    "0001",
    "0010",
    ......
    "1111"
};
printf("%s\n", bin[num&0x0F]);https://stackoverflow.com/questions/27263467
复制相似问题