OC 位运算

来源:互联网 发布:韩美林 知乎 编辑:程序博客网 时间:2024/06/01 07:45

#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        // insert code here...

        NSLog(@"Hello, World!");

        //&参加运算的两个数制,按二进制进行 与运算。如果两个相应的二进位数为1,刚该位的结果为 1 否则为 0

        //0&0=0; 0&1=0;  1&0=0; 1&1 = 1;

        //0|0=0; 0|1=1;  1|0=1; 1|1=1;

        //0^0=0; 0^1=1;  1^0=1; 1^1=0;

        

        Byte a = 3&8;

        Byte b = 3|8;

        Byte c=3^8;

        Byte d = ~3;

        

        signed char i = ~3;

        

        //整数的原码(0000 0011)=反码(0000 0011)=补码(0000 0011)

        //负数以补码的形式存在

        //负数的绝对值原码=(|0000 0011|)=反码(1111 1100)=补码(反码+1(1111 1101))

        //如果补码为符号位为0表示一个整数,为1 表示一个负数

        //补码转原码  补码(1111 1101)=反码(符号位不变 1000 0010) =原码(符号位不变+1 1000 0011)

        

        //值=-4

        //计算 3原码 0000 0011

        //取反(不等于反码,取反后还是原码) 1111 1100 =252

        //signed char 有符号 范围在=128-127 252>127 所以该值有符号

        //1111 1100 符号位不变 取反 1000 0011

        //反码加1 符号位不变 1000 0100=-4

        

        

        signed char j= (signed char)(3<<7);

         int fh = j;

        NSLog(@"%i",fh);

        //计算 0000 00011 向左位移7位 1000 0000 signed char 范围-128-127 符号位为1 得-128

        signed char k= (signed char)(3>>1);

        int fk = k;

        NSLog(@"%i",fk);

        //计算 0000 00011 向右位移1位 0000 0001 signed char 范围-128-127 符号位为0 得1

        

        //以此类推

    }

    return 0;


//二进制和十进制互转

https://jingyan.baidu.com/article/597a0643614568312b5243c0.html

}

原创粉丝点击