二进制和十进制

二进制和十进制介绍

二进制只包括0和1,十进制包括0~9


二进制和十进制的转换

  • 十进制转二进制:使用除以二获取余数
  • 二进制转十进制:使用8421编码

例子

  1. 1 0 0 1 0 1 1 # 二进制
  2. 75 # 十进制
  3. # ----------转换方式----------

二进制转十进制

每一个二进制位置上都是2的n次方,比如 第0位 是 2,第1位 是 2,第2位 是 2,……,所以

  1. 1 0 0 1 0 1 1
  2. 2^6 2^5 2^4 2^3 2^2 2^1 2^0
  3. 64 32 16 8 4 2 1
  4. 1x64 + 0x32 + 0x16 + 1x8 + 0x4 + 1x2 + 1x1 = 75

十进制转二进制

计算机基础 - 图1


进制

介绍

明白了二进制和十进制之后,在理解别的进制就简单了

我们知道,二进制是逢二进一,十进制是逢十进一。

那么八进制就是逢八进一,十六进制就是逢十六进一,…..

常用的进制也就是二进制,八进制,十进制,十六进制

八进制在最后面加O表示(因为英文为Octal),十六进制在后面加H或者下标16或者在前面使用0x表示

十六进制

要特别介绍一下十六进制

因为十六进制是在十的基础上加入了字母A–>F组成 , 分别代表0–>15


各种进制相互转换

各种进制转换为十进制

各种进制转换为十进制和二进制转换为十进制差不多,比如8进制转换为十进制,让72转为十进制 7 2 8 8 7x8+2x1 = 58


十进制转其他进制

  • 对于整数部分:除N取余,逆向排列
  • 对于小数部分:乘N取整,正向排列

其实也和十进制转换二进制差不多,都是使用除法和乘法,但是细节上有些不同,比如74.45转换为八进制

整数部分

计算机基础 - 图2

小数部分

计算机基础 - 图3

第一次的结果是3 第二次使用第一次剩下的小数计算,就是用0.6去计算,结果是4 那么十进制的结果就是0.34xxxx,这里可以取两位有效数字,那就是0.346—>0.35—>0.4

结果

112.40


位运算

介绍

位运算就是直接对二进制进行操作

规则

含义 Java
a & b
a | b
异或 a ^ b
取反 ~a
左移 a << b
带符号右移 a >> b
无符号右移 a >>> b

注意,计算机中的位运算是根据补码进行的计算

与运算规则

相同位的两个数字均为1则结果为1

  1. 0 0 1 0 1 # a
  2. 1 1 1 0 0 # b
  3. ---------------------
  4. 0 0 1 0 0 # 结果

或运算规则

相同位的两个数有一个为1则结果为1

  1. 0 0 1 0 1 # a
  2. 1 1 1 0 0 # b
  3. ---------------------
  4. 1 1 1 0 1 # 结果

顺便提一嘴,假如数字n为2的幂次方数,那么 n % length == n & (length - 1)

异或运算

相同为0,不同为1

  1. 0 0 1 0 1
  2. 1 1 1 0 0
  3. ---------------------
  4. 1 1 0 0 1

取反运算

除了负数符号位,0和1全部取反

  1. 0 0 1 0 1
  2. ---------------------
  3. 1 1 0 1 0

左移

丢弃最高位,低位用0补齐

左移一位相当于乘2,但一般认为左移比乘法快,因为这是直接针对底层的操作

  1. 1 1 0 0 1 0 0 # 左移2
  2. ---------------------------
  3. 0 0 1 0 0 0 0 0 0

比如这里,一开始的结果是100 左移之后变为了400

如果移到了符号位,那么数值正负将会改变

右移

丢弃最低位,符号位不变

右移一位相当于除以2,但是一般认为右移比乘法快,因为这是直接针对底层的操作

  1. 0 0 1 0 0 0 0 0 0 # 右移2
  2. ---------------------------
  3. 0 0 1 0 0 0 0

相应的符号位不会改变 负数则在当最高位的1移到右边一位时,左边最高位再次补1 整数则在当最高位的0移到右边一位时,左边最高位再次补0

无符号右移

a >>> b就是无符号右移,忽略符号位,空位以0补齐

  1. 0 0 1 0 0 0 0 0 0 # 右移2
  2. ---------------------------
  3. 0 0 1 0 0 0 0

乍一看和右移没什么区别,但是区别是 不会保留符号位,用0补最高位 无符号右移对正数没有意义


原码 反码 补码

原码

原码就是原本的二进制

反码

反码就是原码除了符号位取反

补码

  • 正数补码与原码相同
  • 负数补码为反码加一

字节

8个bit(二进制)为一个字节

字节是计算机最小的存储单元


Windows下常用DOS命令

命令 操作符
盘符切换 盘符:
查看当前文件夹 dir
进入文件夹 cd 文件夹
退出到上一级 cd ..
退出到磁盘根目录 cd \
清屏 cls