Objective-C 快速導覽 - 位元運算

資料儲存在電腦中的方式為利用 0 與 1 的編碼,例如八位元的整數 25 為

0001 1001


另如 ASCII 編碼中的字母 f 為
0110 0110


所謂的位元運算,就是逐位元進行比較,例如以上兩項編碼做邏輯或的位元運算
0001 1001 or 0110 0110


結果會是
0111 1111


Objective-C 語言的位元運算子如下表
運算子功能範例
&a & b
|a | b
^互斥或a ^ b
<<向左位移a << b
>>向右位移a >> b
~取 1 的補數~a


基本資料型態 (basic data type) 中的整數可以做位元運算,舉例如下
#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    int a = 0x101;
    int b = 0x11;
    NSLog(@"%x", a & b);
    NSLog(@"%x", a | b);
    NSLog(@"%x", a ^ b);
 
    a = 0x100;
    b = 0x4;
    NSLog(@"%x", a << b);
    NSLog(@"%x", a >> b);
 
    a = 0x0;
    b = 0x100;
    NSLog(@"%x", ~a);
    NSLog(@"%x", ~b);
 
    [pool drain];
    return 0;
}

/* 《程式語言教學誌》的範例程式
   http://pydoing.blogspot.com/
   檔名:bitwise.m
   功能:Objective-c 程式範例
   作者:張凱慶
   時間:西元 2013 年 4 月 */



編譯執行,結果如下



中英文術語對照
運算元operand
運算子operator
基本資料型態basic data type


您可以繼續參考
運算式


相關目錄
Objective-C 快速導覽
Objective-C 教材
首頁



參考資料
Programming with Objective-C: About Objective-C
Programming with Objective-C: Working with Objects

沒有留言: