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

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

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

    隨筆 - 303  文章 - 883  trackbacks - 0
    <2008年2月>
    272829303112
    3456789
    10111213141516
    17181920212223
    2425262728291
    2345678

    歡迎光臨! 
    閑聊 QQ:1074961813

    隨筆分類(357)

    我管理的群

    公共blog

    • n維空間
    • Email : java3d@126.com 群 : 12999758

    參與管理的論壇

    好友的blog

    我的其他blog

    朋友的網(wǎng)站

    搜索

    •  

    最新評(píng)論

             在我們的教科書中和平時(shí)寫的小型應(yīng)用程序中,很少能見到“<<”移位運(yùn)算符,個(gè)人覺得原因有幾個(gè),第一、我們的程序中時(shí)常使用的是十進(jìn)制數(shù)據(jù),如“10”、“0.5”,很少會(huì)用到十六進(jìn)制的數(shù)。其次,大部分的初級(jí)程序員腦子里沒有二進(jìn)制、八進(jìn)制、十六進(jìn)制的影子,一方面由于學(xué)校教育的缺陷所致、一方面是,生活中所見大多十進(jìn)制的數(shù)據(jù)。
     
           為什么要用到非十進(jìn)制的數(shù)制?
    答:因?yàn)樽止?jié)是內(nèi)存的基本數(shù)據(jù)單位。八進(jìn)制在計(jì)算機(jī)系統(tǒng)里不著重要且奇特的作用,或者說所有和二的N次方(2、4、8、16 ... ... 256、512、1024)的數(shù)都和計(jì)算機(jī)有著莫大的聯(lián)系。

            什么地方,我們會(huì)時(shí)常見到這些數(shù)據(jù)?
    答:具個(gè)人所見,在表示內(nèi)存地址、寄存器地址、端口地址,及對(duì)一些寄存器進(jìn)行附值操作時(shí),會(huì)時(shí)常用到。

            如何對(duì)非十進(jìn)制數(shù)據(jù)進(jìn)行操作?
     答:在C里有不少的運(yùn)算符提供了這些功能。比如:~位取反,& 位邏輯與 ,| 位邏輯或,^ 位邏輯異或,>> 右移,<< 左移 。用這些操作符,可以以二進(jìn)制的方式操作數(shù)據(jù)。

            為什么要學(xué)這些?
    答:這個(gè)問題很有意思、也是我們?cè)趯W(xué)習(xí)之前必須弄清楚的,如果不知道有什么用,那學(xué)完很快就會(huì)忘記,且學(xué)起來毫無熱情可言。廢話多了,當(dāng)你打算拿C做一些底層操作,或者你打算在不久的將來或你現(xiàn)在就打算征服Linux內(nèi)核,那就很有必要學(xué)學(xué)了,學(xué)得好是幫助,學(xué)得不好是瓶頸,有點(diǎn)言重了,呵呵!!

    在眾多的位操作符中,偶最常見的就是"<<"這個(gè)啦!所以這些只打算說說它,如果你對(duì)其他的感興趣,可自行早資料看看。

    首先、你有必要確定你的機(jī)器上裝了VC6或VC2005,我這里裝了2005
    然后、復(fù)制下面這個(gè)程序,到你機(jī)器上運(yùn)行下
    #include <iostream> 
    using 
    namespace std;

    int main(){
            
    int a = 1;
        cout
    <<a<<endl;
        a 
    = a<<10;
        cout
    <<a<<endl;

        
    return 0;
    }
    打印出來的是 > 1024
    為什么是1024?
    看到?jīng)]?上面的代碼,中間有一句是怎么寫的 > a = a<<10;
    對(duì),就是它了,左移位運(yùn)算符號(hào),這句話做的事情是:
    先將a里的1轉(zhuǎn)化為二進(jìn)制的1,然后將他左移10位,每移一位補(bǔ)一個(gè)0上去,運(yùn)行這句之后a在機(jī)器里的二進(jìn)制就成了 10000000000  化為十進(jìn)制 1*210=1024

    哈哈,是不是有點(diǎn)暈,沒事,再運(yùn)行下,下面的程序就完全了解了
    #include <iostream> 
    using 
    namespace std;

    int main(){
        
    int a = 1;
        cout
    <<a<<endl;
        a 
    = a<<10;//1*1024
        cout
    <<a<<endl;
        a 
    = 1;
        a 
    = a<<8;//1*256
        cout
    <<a<<endl;
        a 
    = 2;
        a 
    = a<<9;//2*512
        cout
    <<a<<endl;

        
    return 0;
    }

    總結(jié)一下,這里a<<n 可以看成 a * 2n 這下了解吧^_^

    接下來再介紹下如何在頭文件里使用<<吧!在頭文件里定義的是宏,所以,一旦定義錯(cuò)誤,編譯的時(shí)候并不會(huì)提示出錯(cuò),而運(yùn)行就找了麻煩了,所以一定要小心哦!下面給個(gè)簡單的例子吧!

    i.h
    #define A(var) (var<<10)
    main.c
    #include <iostream> 
    using namespace std;

    #include
    "i.h"

    int main()
    {
        cout
    <<A(1)<<endl;

        
    return 0;
    }

    上面,不過是些極其簡單的內(nèi)容,如果想正真了解,請(qǐng)多看一些低層代碼并多多實(shí)踐吧!


    地震讓大伙知道:居安思危,才是生存之道。
    posted on 2008-02-09 20:37 小尋 閱讀(592) 評(píng)論(1)  編輯  收藏 所屬分類: c/c++/C#/pasic/vb/php/asp(.net)/win-cgi/xml...

    FeedBack:
    # re: C中的 "<<" 位運(yùn)算符 2009-02-04 13:39 militala
    真不錯(cuò), 謝謝, 喜歡...沒有多少人講這么細(xì), 呵呵....
    收了.  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 七色永久性tv网站免费看| 国产.亚洲.欧洲在线| 一级全免费视频播放| www.亚洲精品| 免费人成网站永久| 亚洲成年人啊啊aa在线观看| 国产精品亚洲一区二区三区| 日本一道一区二区免费看| 亚洲AV永久无码天堂影院| 一区二区无码免费视频网站| 亚洲av无码不卡久久| 成人超污免费网站在线看| 亚洲熟妇AV一区二区三区浪潮| 日本免费v片一二三区| 国产亚洲精品美女久久久久久下载| 国产成人免费a在线资源| 永久免费无码网站在线观看个 | 成人免费午夜无码视频| 亚洲明星合成图综合区在线| 成人毛片18女人毛片免费96 | 亚洲经典在线中文字幕| 最近免费中文字幕大全免费| 亚洲国产成a人v在线| 成人黄18免费视频| 免费看一级毛片在线观看精品视频 | 亚洲中文字幕人成乱码| 成年性生交大片免费看| 特级毛片aaaa级毛片免费| 亚洲AV无码乱码在线观看裸奔| 黄页网站在线观看免费高清| 在线精品自拍亚洲第一区| 久久99国产亚洲高清观看首页 | 久久99国产乱子伦精品免费| 亚洲国产精品专区| 亚洲国产精品成人| 特级无码毛片免费视频尤物 | 免费一级毛片在线播放视频| 自拍日韩亚洲一区在线| 激情综合色五月丁香六月亚洲| 久视频精品免费观看99| 免费看一级一级人妻片|