<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小菜毛毛技術(shù)分享

    與大家共同成長

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks
    前不久做的一個(gè)筆記本BIOS相關(guān)的項(xiàng)目,操作對BOIS文件里面的內(nèi)容時(shí)進(jìn)行較多的位運(yùn)算,于是順手整理了一份位運(yùn)算相關(guān)的內(nèi)容。
       Java 定義的位運(yùn)算(bitwise operators )直接對整數(shù)類型的位進(jìn)行操作,這些整數(shù)類型包括long,int,short,char,and byte 。
       所有的整數(shù)類型(除了char 類型之外)都是有符號的整數(shù)。這意味著他們既能表示正數(shù),又能表示負(fù)數(shù)。Java 使用采用補(bǔ)碼來表示負(fù)數(shù)。
       為什么采用補(bǔ)碼嗎?這是考慮到零的交叉(zero crossing )問題。
       原碼:
       將最高位作為符號位(以0代表正,1代表負(fù)),其余各位代表數(shù)值本身的絕對值(以二進(jìn)制表示)。這個(gè)時(shí)候有一個(gè)問題:表示0的時(shí)候正0和負(fù)0表示并不一 樣,所以在計(jì)算機(jī)中沒有采用原碼的表示形式。
       反碼:
       一個(gè)數(shù)如果為正,則它的反碼與原碼相同;一個(gè)數(shù)如果為負(fù),則符號位為1,其余各位是對原碼取反。問題和上面一樣的。所以,計(jì)算機(jī)中也沒有采用反碼來表示數(shù) 字。
       補(bǔ)碼:
       一個(gè)數(shù)如果為正,則它的原碼、反碼、補(bǔ)碼相同;一個(gè)數(shù)如果為負(fù),則符號位為1,其余各位是對原碼取反,然后再加1。也就是通過將與其對應(yīng)的正數(shù)的二進(jìn)制代 碼取反(即將1變成0,將0變成1),然后對其結(jié)果加1。例如,-42就是通過將42的二進(jìn)制代碼的各個(gè)位取反,即對00101010 取反得到11010101 ,然后再加1,得到11010110 ,即-42 。要對一個(gè)負(fù)數(shù)解碼,首先對其所有的位取反,然后加1。例如-42,或11010110 取反后為00101001 ,或41,然后加1,這樣就得到了42。
       在計(jì)算機(jī)中,如果我們用1個(gè)字節(jié)表示一個(gè)數(shù),一個(gè)字節(jié)有8位,超過8位就進(jìn)1,在內(nèi)存中情況為:1 00000000。進(jìn)位1被丟棄。這種情況,我們叫溢出。在計(jì)算機(jī)中,假定byte 類型的值零為0000 0000,反碼為1111 1111 補(bǔ)碼為1 0000 0000,在計(jì)算-0的補(bǔ)碼的時(shí)候因?yàn)橐绯觯瑢?dǎo)致-0和+0是一樣的表示,所以計(jì)算機(jī)中采用補(bǔ)碼的形式表示數(shù)字。
    數(shù)的最大值和最小值:由于最高位為符號位,所以最大值和最小值時(shí)要去掉最高位。如一個(gè)byte為8位.最大值為0111 1111 ,即 (2的7次方) -1 = 127.最小值為1000 0000,即-( 2的7次方) =-128。char為無符號數(shù),沒有符號位,所以最小值為0,最大值為1111 1111 1111 1111 ,即(2的16次方) -1。

    移位運(yùn)算符
    包括:
    “>> 右移,高位補(bǔ)符號位”;
    “>>> 無符號右移,高位補(bǔ)0”;
    “<< 左移”;

    例子:
    -5>>3=-1
    1111 1111 1111 1111 1111 1111 1111 1011
    1111 1111 1111 1111 1111 1111 1111 1111
    其結(jié)果與 Math.floor((double)-5/(2*2*2)) 完全相同。

    -5<<3=-40
    1111 1111 1111 1111 1111 1111 1111 1011
    1111 1111 1111 1111 1111 1111 1101 1000
    其結(jié)果與 -5*2*2*2 完全相同。

    5>>3=0
    0000 0000 0000 0000 0000 0000 0000 0101
    0000 0000 0000 0000 0000 0000 0000 0000
    其結(jié)果與 5/(2*2*2) 完全相同。

    5<<3=40
    0000 0000 0000 0000 0000 0000 0000 0101
    0000 0000 0000 0000 0000 0000 0010 1000
    其結(jié)果與 5*2*2*2 完全相同。

    -5>>>3=536870911
    1111 1111 1111 1111 1111 1111 1111 1011
    0001 1111 1111 1111 1111 1111 1111 1111

    無論正數(shù)、負(fù)數(shù),它們的右移、左移、無符號右移 32 位都是其本身,比如 -5<<32=-5、-5>>32=-5、-5>>>32=-5。
    一個(gè)有趣的現(xiàn)象是,把 1 左移 31 位再右移 31 位,其結(jié)果為 -1。
    0000 0000 0000 0000 0000 0000 0000 0001
    1000 0000 0000 0000 0000 0000 0000 0000
    1111 1111 1111 1111 1111 1111 1111 1111

    位邏輯運(yùn)算符
    包括:
    & 與;
    | 或;
    ~ 非(也叫做求反);
    ^ 異或

    “& 與”、“| 或”、“~ 非”是基本邏輯運(yùn)算,由此可以演變出“與非”、“或非”、“與或非”復(fù)合邏輯運(yùn)算。“^ 異或”是一種特殊的邏輯運(yùn)算,對它求反可以得到“同或”,所以“同或”邏輯也叫“異或非”邏輯。

    例子:
    5&3=1
    0000 0000 0000 0000 0000 0000 0000 0101
    0000 0000 0000 0000 0000 0000 0000 0011
    0000 0000 0000 0000 0000 0000 0000 0001

    -5&3=1
    1111 1111 1111 1111 1111 1111 1111 1011
    0000 0000 0000 0000 0000 0000 0000 0011
    0000 0000 0000 0000 0000 0000 0000 0011

    5|3=7
    0000 0000 0000 0000 0000 0000 0000 0101
    0000 0000 0000 0000 0000 0000 0000 0011
    0000 0000 0000 0000 0000 0000 0000 0111

    -5|3=-5
    1111 1111 1111 1111 1111 1111 1111 1011
    0000 0000 0000 0000 0000 0000 0000 0011
    1111 1111 1111 1111 1111 1111 1111 1011

    ~5=-6
    0000 0000 0000 0000 0000 0000 0000 0101
    1111 1111 1111 1111 1111 1111 1111 1010

    ~-5=4
    1111 1111 1111 1111 1111 1111 1111 1011
    0000 0000 0000 0000 0000 0000 0000 0100

    5^3=6
    0000 0000 0000 0000 0000 0000 0000 0101
    0000 0000 0000 0000 0000 0000 0000 0011
    0000 0000 0000 0000 0000 0000 0000 0110

    -5^3=-8
    1111 1111 1111 1111 1111 1111 1111 1011
    0000 0000 0000 0000 0000 0000 0000 0011
    1111 1111 1111 1111 1111 1111 1111 1000

    參考:
    http://blog.csdn.net/zdmilan/archive/2005/10/30/519634.aspx
    posted on 2010-05-18 12:02 小菜毛毛 閱讀(360) 評論(0)  編輯  收藏 所屬分類: 面試
    主站蜘蛛池模板: 亚洲精品成人无限看| 三级黄色片免费看| 亚洲午夜久久久精品影院| 成人免费视频国产| 四虎永久在线观看免费网站网址 | 91人人区免费区人人| 丰满妇女做a级毛片免费观看| 亚洲一区二区三区在线观看网站| 亚洲欧洲国产日韩精品| 毛茸茸bbw亚洲人| 亚洲精品无码av天堂| 国产无遮挡色视频免费视频| 国产福利在线观看免费第一福利| 99爱免费观看视频在线| 成人久久免费网站| 丝袜捆绑调教视频免费区| 亚洲黄片手机免费观看| 免费的黄网站男人的天堂| 风间由美在线亚洲一区| 亚洲日本VA午夜在线影院| 亚洲六月丁香婷婷综合| 亚洲国产理论片在线播放| 亚洲精品**中文毛片| 亚洲成a人片在线观看播放| 亚洲视频小说图片| 亚洲福利视频网站| 亚洲精品午夜在线观看| 亚洲色大成网站www永久| 精品日韩亚洲AV无码| 亚洲精品动漫在线| 亚洲午夜电影在线观看| 亚洲国产成人99精品激情在线| 亚洲一区二区三区深夜天堂| 久久精品国产亚洲αv忘忧草| 亚洲国产91在线| 亚洲精品理论电影在线观看| 亚洲AV无码一区二区三区牲色| 亚洲欧美日韩综合久久久久| 日韩色日韩视频亚洲网站 | 亚洲视频一区二区| 亚洲午夜未满十八勿入网站2|