您的位置:首页 > 其它

Lesson02 二进制运算

2016-09-04 01:20 253 查看

二进制运算

补码:

   计算机中,数值都是以补码的形式存在的, 原码是被人脑识别的,补码是被机器存储的。

   要求得补码,首先要确定数据长度(几位数),首位表示符号位,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

浮点数安全一点运算:

    把浮点数转为整数运算,用的时候除以相应倍数。

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: