第六章 二进制和位运算

6.1 进制

6.1.1 进制介绍

对于整数,有四种表示方式:

  • 二进制:0,1,满2进1,C语言中没有二进制常数的表示方法
  • 十进制:0-9,满10进1.
  • 八进制:0-7,满8进1,以数字0开头表示
  • 十六进制:0-9及A-F,满16进1,以0x或0X开头表示。【A->10 B->11 C->12 D->13 E->14 F->15】
int num2 = 210; //十进制
int num3 = 01010; //八进制
int num4 = 0x1010; //十六进制

6.1.2 进制的图示

20200309210811

20200309211027

6.2 进制的转换

6.2.1 进制转换的介绍

  • 第一组:(其他进制转十进制)

    • 二进制转十进制

    规则:从最低位开始,将每个位上的树提取出来,乘以2的(位数-1)次方,然后求和。

    • 八进制转十进制

    规则:从最低位开始,将每个位上的数提取出来,乘以8的(位数-1)次方。然后求和。

    • 十六进制转十进制

    规则:从最低位开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。

  • 第二组:(十进制转其他进制)

    • 十进制转二进制

    规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。

    • 十进制转八进制

    规则:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制。

    • 十进制转十六进制

    规则:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制。

  • 第三组:(二进制转其他进制)

    • 二进制转八进制

    规则:从低位开始,将二进制每三位一组,转成对应的八进制数即可

    • 二进制转十六进制

    规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可

  • 第四组:(其他进制转二进制)

    • 八进制转二进制

    规则:将八进制数每一位,转成对应的一个3位的二进制数即可。

    • 十六进制转二进制

    规则:将十六进制数每一位,转成对应的一个4位的二进制数即可。

6.3 原码、反码、补码

对于有符号的数而言:

  • 二进制的最高位是符号位:0表示正数,1表示负数
  • 正数的原码、反码、补码都一样(三码合一);
  • 负数的反码 = 它的原码符号位不变,其他位取反(0->1,1->0);
  • 负数的补码 = 它的反码 + 1;
  • 0的反码,补码都是0;
  • 在计算机运算的时候,都是以补码的方式来运算的。

6.4 位运算符

6.4.1 位运算符介绍

20200310165939

>>、<<算术右移和算术左移,运算规则

算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位

算术左移<<:符号位不变,低位补0

例:

20200310173411

Last modification:March 16th, 2020 at 02:07 pm
如果觉得我的文章对你有用,请随意赞赏