Lesson02 二进制运算

二进制运算

补码:

   计算机中,数值都是以补码的形式存在的, 原码是被人脑识别的,补码是被机器存储的。
   要求得补码,首先要确定数据长度(几位数),首位表示符号位,1为负数,0为正数,后面所有位表示数值。


   正数的补码是自己  负数的补码为,符号位后面的所有位取反,加1:
    [1]  => [00000001]原 => [00000001]补
    [-5] => [10000101]原 => [11111010]反+[00000001] => [11111011]补


    补码求原码:补码-1,取反
     [00000001]补 =>  [00000001]原 == 1
     [11111011]补  => [11111011]-1 => [11111011] + [11111111](-1补码) => [11111010]反 => [10000101]原 == -5


   +0  -0 的补码还是自己


   计算机中,只有加法,没有减法,减法会转为加负数运算,计算结果保留规定的位数,多余的数高位溢出。
   如1-5在计算机中的运算方式(8位):
   [1]  == [00000001]原 == [00000001]补
   [-5]==[10000101]原==[11111010]+[00000001]==[11111011]补
   1-5 == [00000001]补 + [11111011]补 
         == [11111100]补 
         == [11111100] -1 (负数原码=补码-1,再取反)
         == [11111100]+[11111111]==[11111011]
         ==[10000100]
         ==-4
    补码的好处:方便计算机进行运算,计算机只能进行相加的运算,把数据都按补码存储后,符号位也会参与计算。


左移,右移:

    逻辑左移、算术左移:右边补0
    逻辑右移:左边补0
    算术右移:首位为1,补1,否则补0


与、或、非、异或:

    与:&&   如: A、B都为非0,A&B==true 否则A&B==false   
    或:||      如:A、B有一个为非0,A||B==true,否则A||B==false
    非:!    如:A为非0,!A==false
    异或:^   如:A、B同为0或同为非0,A^B同==true,否则A^B同==false


浮点数安全一点运算:

    把浮点数转为整数运算,用的时候除以相应倍数。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值