diff --git a/chap-6-binary-and-decimal/chap-6-binary-and-decimal.md b/chap-6-binary-and-decimal/chap-6-binary-and-decimal.md
new file mode 100644
index 0000000000000000000000000000000000000000..f826fd679147c49d151dfdca35369f4d752e2769
--- /dev/null
+++ b/chap-6-binary-and-decimal/chap-6-binary-and-decimal.md
@@ -0,0 +1,319 @@
+# 第六章:二进制与十进制
+
+# 1 本章中能学到的内容
+* 十进制与二进制的区别。
+* 计算机储存数据的方式。
+* 32 位系统与 64 位系统的区别?
+## 1.1 本章中提及的技术概念
+* 二进制
+* 比特,字节
+* 十进制
+* 编码,编码器
+* RAM
+# 2 介绍:数字,数,数量
+首先定义几个关键词:
+
+* **数字**:表示一个数字的一个符号或一组字符。
+* **数**代表一个量词,是可以被计数的。
+* **数字**是**数**的代表。
+* **进制**是帮助我们计数和表示数量的一系列规范。
+
+每天我们都会接触到很多十进制的数:10.254, 125, 2020, 31.…
+
+但是**十进制并不是唯一的进制**,也不是总是使用十进制。
+
+我们可以用其他的进制来呈现一个数。
+
+* 来看一个数的例子:“一百二十三”
+
+ "123"是十进制的表示方式
+
+ - 数字表示是 “123”
+
+ "1111011"是二进制的表示方式
+
+ - 数字表示是"1111011"
+
+ "7B"是十六进制的表示方式
+
+ - 数字表示是"7B"
+
+ "173"是八进制的表示方式
+
+ - 数字表示是"173"
+
+同样的数量,同样的潜在现实可以用不同的形式来表达。
+
+为什么理解这一点很重要?因为计算机不会用十进制来存储数据。在物理层,信息是用0和1来存储的。
+
+本章将详细介绍十进制和二进制的工作原理。
+
+# 3 词源与符号
+
+十进制来自拉丁语单词 "Decimus" ,意思是“十”。而二进制来自拉丁语 "bini" ,意思是“两个在一起”。 这两个词的词源告诉我们这些系统是如何构建的:
+
+* 二进制由 0 和 1 构成
+* 十进制由十种数字构成:0,1,2,3,4,5,6,7,8,9
+
+二进制的数据是由 "0" 和 "1" 构成的。比如 101010 是由二进制编码程序产生的。
+
+十进制的数据是由 0,1,2,3,4,5,6,7,8,9 构成的。比如 42 是由十进制产生的。数字 10 可以由二进制或十进制编码产生。(因此,这两种数字 10 表示的不是相等的数量)
+# 4 十进制
+让我们看一个十进制数:
+
+$$ 123 $$
+
+这个数是一百二十三。这个数由“数字”组成。第一个数字代表百位数。第二个数字是十位数。最后一个数字是个位数。十进制是**位置制**。这意味着数字对数的贡献取决于数字在数中的位置。
+
+
+十进制是位置制[图:decimal-position-123-1]
+
+让我们更进一步,用10来表示100:
+$$ 100=10 \times 10 $$
+我们可以用10的平方:
+$$ 10 \times 10=10^2 $$
+$ 10^2 $ 和 $ 10 \times 10 $ 是相等的。10是**底数**,2是**指数**。当我们见到这个结构,我们可以说是对10求2次方。根据这个逻辑,我们可以得到:
+$$ 10=10^1 $$
+以及:
+$$ 1=10^0 $$
+上边这个式子可能会看起来有些奇怪。这是一个数学规律:非零数的0次方等于1。
+**有了以上的基础,我们可以把$ 123 $分解成 10的指数的组合**
+$$ 123=1 \times 10^2 + 2 \times 10^1 + 3 \times 10^0 $$
+如果你从左到右阅读这个式子:$ 1 \times 10^2 + 2 \times 10^1 + 3 \times 10^0 $,你可以发现10的指数在依次递减。
+写下每一位数字时,这个幂通常与数字的位置相对应。
+
+* 数字"1"出现在位置2($ 1 \times 10^2 $)
+* 数字"2"出现在位置1($ 2 \times 10^1 $)
+* 数字"3"出现在位置0($ 3 \times 10^0 $)
+
+我区分位置的方式没准跟你有所不同,你预想当中的有可能是:
+
+* 数字"1"出现在位置3
+* 数字"2"出现在位置2
+* 数字"3"出现在位置1
+
+如果以1开始计数,这是完全正确的,但是我们以0开始计数。记住这项公约,因为在之后它将帮助到你!
+
+
+
+10进制数和10的幂指数之间的关系
+
+总之,数字和数之间的关系如下:
+对于给定的三个数字( digits ):
+
+$$ digit2digit1digit0 $$
+
+它的数值(数量)可以表示为:
+
+$$ digit2 \times 10^2 + digit1 \times 10^1 + digit0 \times 10^0 $$
+
+当然,这个公式对位数大于或小于3位的数同样有效!
+
+## 4.1 分数
+
+我们已经看到了这个系统是如何处理整数的,那么小数呢(带有“小数分隔符”的数字,如123.14)?
+
+这个数同样可以用10的幂指数来表示:
+
+$$ 123.45=1 \times 10^2 + 2 \times 10^1 + 3 \times 10^0 + 4 \times \frac{1}{10^1} + 5 \times \frac{1}{10^2} $$
+
+这是合理的因为:$ \frac{1}{10^1}=\frac{1}{10}=0.1 $
+
+* 所以,$ 4 \times \frac{1}{10^1}=0.4 $
+
+$ \frac{1}{10^2}=\frac{1}{10^2}=0.01 $
+
+* 所以,$ 5 \times \frac{1}{10^2}=0.05 $
+
+# 二进制
+
+二进制数由零和一组成。二进制和十进制一样,是一种位置数制。这意味着每个数字都有一个取决于其位置的值。它是一个以2为基数的系统(十进制是以10为基数)。
+
+让我们看一个二进制数:
+
+$$ 10binary $$
+
+请注意,我在数字中添加了下标 "binary" ,因为这个数字也存在于十进制中。十进制数10不等于二进制数10。它表示的数量不同。$ 10binary $ 是一个由两位二进制数字组成的数。术语二进制数字(**bi**nary digi**t**)有一个广泛使用的缩写:**位(bit)**。我们可以用二的幂得到这个数的十进制等价物:
+
+$$ 10binary=(1 \times 2^1 + 0 \times 2^0)decimal $$
+
+$$ 10binary=(1 \times 2)decimal $$
+
+$$ 10binary=2decimal $$
+
+二进制的10和十进制的2在数量上是相等的。只是单位的区别。我们看下一个例子:
+
+$$ 100010binary $$
+
+我们将找到它的十进制表示法。我们取每个数字,把它乘以 $ 2^{x} $,其中x是二进制数中数字的位置(见下图)
+
+
+
+二进制和十进制的转换[fig:Binary-to-decimal-1]
+
+
+
+二进制的基本位置规律
+
+顺便说一下,我听过一位同事讲过一个著名的笑话:“世界上有 10 种人,懂二进制的和其他的。” :)
+
+# 6 存储容量
+
+## 6.1 2个位(bits)的存储容量
+
+在一个两位二进制数字中,我们能存储的最大十进制数是多少?以下是由两位数字组成的二进制数列表:
+
+$$ 00binary=(0 \times 2^1 + 0 \times 2^0)decimal=0decimal $$
+
+$$ 01binary=(0 \times 2^1 + 1 \times 2^0)decimal=1decimal $$
+
+$$ 10binary=(1 \times 2^1 + 0 \times 2^0)decimal=2decimal $$
+
+$$ 11binary=(1 \times 2^1 + 1 \times 2^0)decimal=3decimal $$
+
+用两个位可以存储从 $ 0decimal $ 到 $ 3decimal $ 这四个数,可以存储的最大的数是 $ 3decimal $ 。
+
+## 6.2 3个位(bits)的存储容量
+
+在一个三位二进制数字中,我们能存储的最大十进制数是多少?以下是由三位数字组成的二进制数列表:
+
+$$ 000binary=(0 \times 2^2 + 0 \times 2^1 + 0 \times 2^0)decimal=0decimal $$
+
+$$ 001binary=(0 \times 2^2 + 0 \times 2^1 + 1 \times 2^0)decimal=1decimal $$
+
+$$ 010binary=(0 \times 2^2 + 1 \times 2^1 + 0 \times 2^0)decimal=2decimal $$
+
+$$ 011binary=(0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0)decimal=3decimal $$
+
+$$ 100binary=(1 \times 2^2 + 0 \times 2^1 + 0 \times 2^0)decimal=4decimal $$
+
+$$ 101binary=(1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0)decimal=5decimal $$
+
+$$ 110binary=(1 \times 2^2 + 1 \times 2^1 + 0 \times 2^0)decimal=6decimal $$
+
+$$ 111binary=(1 \times 2^2 + 1 \times 2^1 + 1 \times 2^0)decimal=7decimal $$
+
+用三个位可以存储从 $ 0decimal $ 到 $ 7decimal $ 这八个数,可以存储的最大的数是 $ 7decimal $ 。
+
+## 6.3 8个位(bits)的存储容量(一个比特)
+
+一个8位二进制数字中能存储的最大十进制数是多少?我们可以列出可以构建的所有不同的二进制数,但这将非常耗时。你有没有注意到在前面的章节中,最大数量是所有位的数字都是1组成的?当一个二进制数只由1组成时,这似乎是合乎逻辑的;它的十进制值将等于两个幂的和(从0到n),其中n是位数减1。如果二进制数中有一个0位数,则不计算两个相应的幂。
+
+$$ 11111111binary=(1 \times 2^7 + 1 \times 2^6 + 1 \times 2^5 + 1 \times 2^4 + 1 \times 2^3 + 1 \times 2^2 + 1 \times 2^1 + 1 \times 2^0)decimal=255decimal
+
+用八个位可以存储从 $ 0decimal $ 到 $ 255decimal $ 这其中所有的数,8个位(bit)也被叫作1比特(byte)。从 $ 0decimal $ 到 $ 255decimal $ 一共是256个数。
+
+# 7 如何存储图片,视频,... ?
+
+我们详细介绍了如何将十进制数转换为二进制数以存储在内存中。我希望这是清楚的和令人兴奋的。但这是不够的。程序操纵的东西比数字多得多。
+
+我们可以使用以下这些元素来构建程序:
+
+* 图片
+* 文本
+* 影片
+* 三维模型
+* .....
+
+这些元素是怎么存储在内存中的呢?
+
+答案很简单:最终,即使是照片和电影也将使用0和1来存储!我们将把它们转换成二进制。这项工作将由被称为编码器的专门程序执行。编码器将获取某个文件的特定格式作为输入,并将其转换为目标格式。在我们的例子中,目的格式是二进制的。
+
+我们不需要写那些程序;它们都是由Go提供的。你需要了解,每个文件或数据块都是使用二进制数字(位)存储在后台的。
+
+二进制表示对我们来说是隐藏的。
+
+# 8 32 位系统 vs 64 位系统
+
+## 8.1 程序的运行需要内存支持
+
+计算机的处理器负责执行程序。大多数程序需要存储和访问内存。如果你写的程序在屏幕上显示"42"。在屏幕后面,数字42需要存放在某个地方。系统还需要从内存中获取它。
+
+这是通过寻址系统完成的。每一位信息都存储在内存单元中的一个精确位置,要获得这些信息,处理器需要有能力获得其完整地址。
+
+请记住,有两种类型的内存:
+
+* 核心存储器:只读存储器(ROM)和随机存储器(RAM)
+* 辅助存储器:硬盘,U盘...
+
+下面我们主要讨论核心存储器。
+
+## 8.2 内存地址是一个数字
+
+对于处理器,**地址是一个数字**。一个内存地址就像一个邮政地址。它精确地标识了内存空间中的一个点。
+
+处理器将地址存储在寄存器上。寄存器是处理器内部的一个地方,在这里可以保存地址供以后使用。例如,假设我们有一个做加法的程序。我们的程序定义了一个变量来保存第一个值(比如说1234)和另一个变量来存储第二个值(比如说1290999)。当处理器执行我们的程序时,它需要从内存中获取值1234和值1290999。处理器将把这两个地址保存在寄存器中。
+
+## 8.3 内存可寻址:一种有限的资源
+
+寄存器容量有限;它们可以存储特定大小的地址(以位写入)。对于16位处理器,这些寄存器的最大容量是... 16位。对于32位处理器,最大容量为32位。同样的推理也适用于64位。
+
+最大寄存器容量将定义我们可以寻址的内存量。
+
+为什么?请记住,我们将地址存储在这些寄存器上,地址是一个数字:
+
+* 在32位系统上,我们可以存储的数从0到4294967295(约等于$2^32$)
+ - 用32位,我们可以存储40亿个无符号数字,40亿个地址。
+* 在64位系统上,我们可以存储的数从0到18446744073709551615(约等于$2^64$)
+ - 这产生了很多可能的地址。
+
+
+32 位 = 40 亿个地址
+
+64 位 = 18446744073 个地址(好多好多地址哦:))
+
+## 8.4 可能的地址数和 RAM 的大小的关系
+
+RAM是由存储单元组成的硬件部件。位存储在单元格中。一般说来,RAM是字节可寻址的。这意味着系统一次可以获取 8 位数据。
+
+我们已经看到内存地址的大小受到寄存器大小的**限制**。
+
+32 位系统只能处理由 32 位组成的地址。每个位由 0 或 1 组成,这种情况产生了 $2^32$ ≈ 40亿个可能性。
+
+* 有 40 亿个地址,我们能寻址多少字节?
+ - => 40 亿个字节
+ - 我们可以把这个单位转换成千兆字节。
+ - 1 GB = 10 亿字节
+ - 所以,40 亿字节 = 4 GB
+
+对于32位系统,系统可以访问4G的内存。在32位系统上安装超过4GB的RAM是没有用的。
+
+* 在 64 位系统上,地址的数目要大得多;因此,可寻址的内存量更大:理论上为 16 EB(1 EB = 10737418241073741824 GB)。
+ - 因此,16 EB 理论上是 64 位计算机上可寻址的最大RAM量。
+
+# 9 自我测试
+
+## 9.1 问题
+
+1. 什么是位?
+2. 什么是字节?
+3. 什么是编码器?
+4. 32 位系统可寻址的最大 RAM 量是多少?
+5. (001)binary 的十进制版本是?
+
+## 9.2 参考答案
+
+1. 什么是位?
+ 1. 这是二进制字符的缩写
+ 2. 是一个 0 或 一个1
+2. 什么是比特?
+ 1. 1 比特等于 8 位
+3. 什么是编码器?
+ 1. 编码器接收一个给定的格式的输入,把它转化成另一种格式的输出。
+ 2. 这个过程是可逆的。
+4. 32 位系统可寻址的最大 RAM 量是多少?
+ 1. 4 GB
+5. (001)binary 的十进制版本是?
+ 1. 1
+
+# 10 关键知识点
+
+* 数字表示了数
+* 每种进制都有其表示数的方式
+ - 100 可以写成十进制或二进制,但是两种方式呈现的数是不同的。
+* 在物理层面,数据是使用二进制位来储存在内存中。
+* 一位是一个二进制字符
+* 一个比特是 8 位
+* 一个 64 位系统可以分配的地址远多于一个 32 位系统
+
+https://www.encyclopedia.com/social-sciences-and-law/economics-business-and-labor/businesses-and-occupations/numeration-systems↩︎
\ No newline at end of file
diff --git a/chap-6-binary-and-decimal/imgs/32_bits_addressable.3d5386aa.png b/chap-6-binary-and-decimal/imgs/32_bits_addressable.3d5386aa.png
new file mode 100644
index 0000000000000000000000000000000000000000..f08db8f183f66eb1f6fc9c6165fa061e63ac0bf4
Binary files /dev/null and b/chap-6-binary-and-decimal/imgs/32_bits_addressable.3d5386aa.png differ
diff --git a/chap-6-binary-and-decimal/imgs/64_bits_addressable.38da68a4.png b/chap-6-binary-and-decimal/imgs/64_bits_addressable.38da68a4.png
new file mode 100644
index 0000000000000000000000000000000000000000..3fa532ca2190d050cd6bbb5cd7835b01ce07dea9
Binary files /dev/null and b/chap-6-binary-and-decimal/imgs/64_bits_addressable.38da68a4.png differ
diff --git a/chap-6-binary-and-decimal/imgs/base10_positioning.766ed476.png b/chap-6-binary-and-decimal/imgs/base10_positioning.766ed476.png
new file mode 100644
index 0000000000000000000000000000000000000000..bba3530de1fcc4bd066143b5c91aa00dfed1e2d9
Binary files /dev/null and b/chap-6-binary-and-decimal/imgs/base10_positioning.766ed476.png differ
diff --git a/chap-6-binary-and-decimal/imgs/base2_positioning.6566a64e.png b/chap-6-binary-and-decimal/imgs/base2_positioning.6566a64e.png
new file mode 100644
index 0000000000000000000000000000000000000000..bb2367e11b423ad9f1f180ab454512d81001e346
Binary files /dev/null and b/chap-6-binary-and-decimal/imgs/base2_positioning.6566a64e.png differ
diff --git a/chap-6-binary-and-decimal/imgs/binary.f503ba7d.jpg b/chap-6-binary-and-decimal/imgs/binary.f503ba7d.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..01f1dc09386f89d4bd0a80a593f77d519eab1cfe
Binary files /dev/null and b/chap-6-binary-and-decimal/imgs/binary.f503ba7d.jpg differ
diff --git a/chap-6-binary-and-decimal/imgs/binary_to_decimal.576ba933.png b/chap-6-binary-and-decimal/imgs/binary_to_decimal.576ba933.png
new file mode 100644
index 0000000000000000000000000000000000000000..3edb99aced0978698c5298f64476ec32e5613002
Binary files /dev/null and b/chap-6-binary-and-decimal/imgs/binary_to_decimal.576ba933.png differ
diff --git a/chap-6-binary-and-decimal/imgs/decimal_123.b31c96d0.png b/chap-6-binary-and-decimal/imgs/decimal_123.b31c96d0.png
new file mode 100644
index 0000000000000000000000000000000000000000..4a890eb4dd07ff4748c70de66dd3af4a76f2ba23
Binary files /dev/null and b/chap-6-binary-and-decimal/imgs/decimal_123.b31c96d0.png differ