簡體   English   中英

C語言中的位移

[英]bit shift in c language

我試過了:

#include<stdio.h>

main()
{
    int a=10000;
    unsigned char cp1=0,cp2=0,cp3=0,cp4=0;

    cp1 = (a & 0xff000000) >> 24;
    cp2 = (a & 0x00ff0000) >> 16;
    cp3 = (a & 0x0000ff00) >>  8;
    cp4 = (a & 0x000000ff)      ;

    printf("%d %d %d %d\n",cp1,cp2,cp3,cp4);
}

我的輸出是:

0 0 39 16

我發現(39<<8) + 16=10000

我不明白cp3=(a & 0x0000ff00)>>8; ==39 cp3=(a & 0x0000ff00)>>8; ==39它是如何工作的?

我知道0xff=255 ,我想知道( & )操作和0xff如何一起工作並占用特定位。

您能教我它如何工作嗎?

             a  = 0010 0111 0001 0000
        0xff00  = 1111 1111 0000 0000
   (a & 0xff00) = 0010 0111 0000 0000
(a & 0xff00)>>8 = 0000 0000 0010 0111  //shift the bits of above ANDing 8 times to right
0000 0000 0010 0111 = 39 in decimal

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM