日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 芯聞號(hào) > 充電吧
[導(dǎo)讀]只需要記住16進(jìn)制的2 、4、8、C 就能記住二進(jìn)制碼 16進(jìn)制轉(zhuǎn)換成2進(jìn)制: 轉(zhuǎn)換方式有2種 1.先轉(zhuǎn)換成10進(jìn)制,再轉(zhuǎn)成2進(jìn)制 2.直接轉(zhuǎn)換成2進(jìn)制 2進(jìn)制轉(zhuǎn)16進(jìn)制:

只需要記住16進(jìn)制的2 、4、8、C 就能記住二進(jìn)制碼



16進(jìn)制轉(zhuǎn)換成2進(jìn)制:
轉(zhuǎn)換方式有2種
1.先轉(zhuǎn)換成10進(jìn)制,再轉(zhuǎn)成2進(jìn)制
2.直接轉(zhuǎn)換成2進(jìn)制 
2進(jìn)制轉(zhuǎn)16進(jìn)制:
同16進(jìn)制轉(zhuǎn)2進(jìn)制,只是每4位拼湊一個(gè)16進(jìn)制數(shù),不夠補(bǔ)0
或 |運(yùn)算,二進(jìn)制中每一位進(jìn)行比較,兩個(gè)數(shù)據(jù)有一個(gè)或全部為1時(shí),此位為1
4:0100
8:1000
 :1100 = 0xc = 12
public class Test4{

    public static void main(String[] args)
    {
        int x = 4;
        int y = 8;
        System.out.println(x|y);//輸出12

    }


}
與 &運(yùn)算,二進(jìn)制中每一位進(jìn)行比較,兩個(gè)數(shù)據(jù) 全部為1時(shí),此位為1
4:0100
8:1000
 :0000 = 0x0= 0
public class Test4{

    public static void main(String[] args)
    {
        int x = 4;
        int y = 8;
        System.out.println(x&y);//輸出0

    }


}
異或 ^ 運(yùn)算,同一位相同為0,不同為1
4:0100
8:1000
 :1100 = 0xc= 12
public class Test4{

    public static void main(String[] args)
    {
        int x = 4;
        int y = 8;
        System.out.println(x^y);//輸出12

    }


}
取反 ~ 運(yùn)算, 1變0,0變1 實(shí)際上相當(dāng)于每一個(gè)字節(jié)=0xFF(255)-當(dāng)前值 但是在java中,他經(jīng)過這樣運(yùn)算得出的結(jié)果再被256減,才是正確的值。他的運(yùn)算可以簡化成 (當(dāng)前值+1)*-1

這里為了方便觀察 用byte類型

JAVA
 ~8=255-8 -256 =-8 -256+255 = -8-1
 ~8= (8+1)*-1

 ~4 =255-4-256 =-4-1
 ~4 = (4+1)*-1
public class Test4{

    public static void main(String[] args)
    {
        byte x = 4;
        byte y = 8;
        System.out.println(~x);//輸出-5
        System.out.println(~y);//輸出-9

    }


}
C語言
 ~8= 255-8
 ~4 =255-4
typedef unsigned char       BYTE;
int main()
{
    BYTE  x = ~4;
    printf("%d", x);//251

    x = ~8;
    printf("%d", x);//247


}

左移 和 右移 正數(shù)右移,空位補(bǔ)0,負(fù)數(shù)空位補(bǔ)0xF( 這里是針對(duì)移動(dòng)1個(gè)16進(jìn)制位長度而不是1位,移動(dòng)4位=移動(dòng)1個(gè)16進(jìn)制長度 1字節(jié)情況自己測試,理論上是補(bǔ)1和0)

空位以0填充,負(fù)數(shù)先還原成正數(shù),進(jìn)行運(yùn)算,再取負(fù),
左移,不管正負(fù)數(shù),空位全補(bǔ)0
以下是調(diào)試器測試結(jié)果

左移補(bǔ)位:
    int x = -0x123;
    int z = x << 4;  
    int x2 = 0x123;
    int z2 = x2 << 4; 

右移補(bǔ)位:
    int x = -0x123;
    int z = x >>4;  
    int x2 = 0x123;
    int z2 = x2 >> 4; 

4:0100  左移1位
 :1000 =8
8:1000 右移1位
 : 0100
public class Test4{

    public static void main(String[] args)
    {
        byte x = 4;
        byte y = 8;
        byte z = -8;
        System.out.println(x<<1);//輸出8
        System.out.println(y>>1);//輸出4
        System.out.println(z>>1);//輸出-4

    }


}

左移常做平方運(yùn)算,左移N位 = 數(shù)據(jù)*2的N次方
異或 、與運(yùn)算,在C語言中常做參數(shù)類型過濾,比如MessageBox的按鈕樣式MB_OK,MB_YES就是這種實(shí)現(xiàn)。
更多的應(yīng)用實(shí)在代碼混淆,反調(diào)試跟蹤中

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉