OC 位运算

#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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值