<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

    朋友的網站

    搜索

    •  

    最新評論

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

            什么地方,我們會時常見到這些數據?
    答:具個人所見,在表示內存地址、寄存器地址、端口地址,及對一些寄存器進行附值操作時,會時常用到。

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

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

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

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

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

        
    return 0;
    }
    打印出來的是 > 1024
    為什么是1024?
    看到沒?上面的代碼,中間有一句是怎么寫的 > a = a<<10;
    對,就是它了,左移位運算符號,這句話做的事情是:
    先將a里的1轉化為二進制的1,然后將他左移10位,每移一位補一個0上去,運行這句之后a在機器里的二進制就成了 10000000000  化為十進制 1*210=1024

    哈哈,是不是有點暈,沒事,再運行下,下面的程序就完全了解了
    #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;
    }

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

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

    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;
    }

    上面,不過是些極其簡單的內容,如果想正真了解,請多看一些低層代碼并多多實踐吧!


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

    FeedBack:
    # re: C中的 "<<" 位運算符 2009-02-04 13:39 militala
    真不錯, 謝謝, 喜歡...沒有多少人講這么細, 呵呵....
    收了.  回復  更多評論
      
    主站蜘蛛池模板: 国产成人精品日本亚洲11| 男女一进一出抽搐免费视频| 国产精品高清视亚洲一区二区| 日韩精品无码免费专区午夜| 成年人在线免费观看| 国产亚洲真人做受在线观看| 一本久久A久久免费精品不卡| 五月亭亭免费高清在线| 久久久国产精品亚洲一区| 青青久久精品国产免费看| 精品国产污污免费网站aⅴ| 亚洲视频小说图片| 日本视频免费观看| 精品国产亚洲一区二区在线观看 | 亚洲av日韩av激情亚洲| a级片免费在线播放| 亚洲色四在线视频观看| 人妻仑乱A级毛片免费看| 性一交一乱一视频免费看| 亚洲天天做日日做天天欢毛片| 青青草无码免费一二三区| 亚洲欧洲美洲无码精品VA| 亚洲日韩在线中文字幕综合| 四虎永久在线精品免费观看地址| 草久免费在线观看网站| 亚洲成AV人片在| 国产午夜无码片免费| 亚洲AV无码国产丝袜在线观看| 国产99视频精品免费视频76| 国产免费卡一卡三卡乱码| 波霸在线精品视频免费观看| 亚洲韩国—中文字幕| 在线观看视频免费国语| 国产日韩久久免费影院 | 性生大片视频免费观看一级| 亚洲av无码一区二区乱子伦as| 波多野结衣在线免费视频| 精品无码一区二区三区亚洲桃色| 免费观看男人免费桶女人视频| 色在线亚洲视频www| www.亚洲精品.com|