进制与位运算符


计算机中的单位

常⽤计算机单位 bit(位):

  • 1位能够存放⼀个0 或⼀个1

  • byte(字节):1字节 = 8 bit

  • kb:1kb = 1024byte

  • mb: 1mb =1024kb

  • gb:1GB = 1024MB

  • tb:1TB =1024GB

  • pb:1PB = 1024TB

  • eb:1EB = 1024PB

  • zb:1ZB = 1024EB

计算机的储存原理

  • 在计算机中,任何⼀个⽂件在底层中都是以⼀⼤串的0或 1 的集合来保存的。
  • 只有安装了对应⽂件的编码解码器,计算机才能够正确识别对应的⽂件。如没有播放 器,就⽆法执⾏视频或⾳频⽂件。编码解码器就可以将指定顺序的0和1的集合解析成视 频或⾳频。
  • 对于⽂件的处理,就是计算机对该⽂件的底层存储的0和1进⾏处理。
  • 1位能够存放⼀个0或1,⼀个字节能够存储8位。所以1个字节能够表示 256 种0和1不同 的组合,1个字节能够表示256个不同的⽂字,如果⽤来表示⾮负数,表示0~255。两个字节 能够表示 2的16次⽅ 即65536个⽂字

进制

概述

  • ⽤于科学计数的语法或叫规则。平时⽣活中的数字计数⽅式就是⼗进制。其他的常⻅进 制有⼆进制、⼗六进制。

二进制

  • 二进制(binary) 0,1, 满2进1,以0b0B开头。

    0000 0000 + 0000 0001 = 0000 0001
    0000 0001 + 0000 0001 = 0000 0010
    0000 0011 + 0000 0001 = 0000 0100
    0000 0011 + 0000 0011 = 0000 0110
    

十进制

  • 十进制(decimal) 0-9, 满10进1 ⽣活中使⽤的计数规则。

八进制

  • 八进制(octal): 0-7,满8进1.以数字0开头表示。

十六进制

  • 指数字的计数规则。0-9以及A~F来表示,逢16进1
  • ⼀个⼗六进制⽤4个⼆进制来表示
  • 为了⼗六进制和⼗进制的区分,那么,可以⽤ 0x# 来表示⼗六进制的前缀,或 H 来作 为⼗六进制的后缀。⽆论前缀或后缀效果都⼀样。计算机中⽤的是前缀,⽐如css⾥颜⾊ 中的#就是⼗六进制的前缀

进制之间相互的转换

二进制转为⼗进制

  • 思想: 等于⼆进制每位数的2次⽅之和

  • 流程:从⼆进制的最右边第⼀个数开始,将每⼀位的数字乘以2的位数-1次⽅对应的 和进⾏相加,相加的和就是对应的⼗进制

    0000 0110
    0 *2^0 +1*2^1 + 1*2^2 +0*2^3 +0*2^4+0*2^5+0*2^6+0*2^7= 2+4 = 6
    2. 0001 0101
    1*2^0 +1*2^2 +1*2^4 = 1 +4 + 16= 21
    

十进制转为二进制

  • 思想:除2取余,倒序排列

  • 流程:将⼗进制依次进⾏ 除2运算 ,直到最后余数为0为⽌,将每次除法的余数倒序 排列,就是⼆进制

二进制转十六进制

  • 从⼆进制最右边开始,4个⼆进制表示⼀个⼗六进制

    0001  1000
     0x18
    1010  0100
     0xa4
    

八进制转二进制

  • 一个八进制数,为3个二进制数

    0357
    000 011 101 111
    

原码、补码、反码

原码

  • 概念:原码是⼈们为了⽤⼆进制来表示正负数,将⼆进制的最⾼位来表示符号位的⼀种 ⼆进制表示⽅式(逻辑上的),为0则表示正数,为1表示负数。

    0000 0001 表示+1 1000 0011 表示-3 1000 0001表示-1
    

反码

  • 概念: ⼀个数字的⼆进制反码是其原码的基础之上进⾏操作

  • 语法:正数的反码跟原码⼀样,负数的反码是除了符号位以外,其他位取反。

    1-1 的反码
    1: 0000 0001(反、原) -1:1111 1110()
    

    反码能够解决数值的正确问题,但是符号位不对,引⼊了最终的计算机使⽤⽅案—补 码

补码

  • 概念:是⼀种数字的⼆进制表示⽅式,也是最终计算机采⽤的⽅案。即计算机中是⽤⼆ 进制的补码来进⾏处理的。

  • 语法:正数的补码跟原码⼀样。负数的补码是在其反码的基础之上加1

    1-110000 0001(补,反,原) -1: 1111 1111()
    

    综上所述,最终只有补码的⽅式能够完美解决减法的问题, 所以计算机中⼆进制的处理⽅ 式就是⽤的补码的⽅式 。

位运算

概述

  • 是针对⼆进制来进⾏运算的运算符

位运算符

  • ^ 异或运算 同为0,异为1,按位异或
  • & 与运算
  • ~ 取反运算 1 为0 0为 1
  • | 或运算
  • >>> 无符号右移 最高位无论是1 还是0 空缺都补 0
  • << 逻辑左移 所有的⼆进制向左移动指定的位数。⽆论正负,移动之后,低位⼀律⽤0进⾏补充
  • >>逻辑右移 所有的⼆进制向右移动指定的位数。⾼位如果是正数,那么以0作为补充,负数以1作为 补充

img


文章作者: 时光路
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 时光路 !
评论
  目录