关于此实验
在计算机内部,每个数字、字母、图片和声音都以一组开关状态存储:开或关,也就是0或1。每个开关状态称为一位(bit)。就像十进制数中每一位的数值都是其右侧一位的10倍,每一位二进制数的数值都是其右侧一位的2倍:1、2、4、8、16,以此类推。切换各位的开关状态,逐个计数并观察进位如何传递;将二进制数转换为十进制和十六进制,并了解计算机如何存储负数。
学习目标
- 说明二进制是一种基数为2的数制,只使用数字0和1
- 在最多8位的范围内转换二进制数和十进制数
- 用二进制计数,并说明进位的工作原理
- 求出给定位数所能存储的最大数
- 将二进制转换为十六进制,并说明溢出和二进制补码
使用方法
- 1用4位二进制数,每次只打开一位。写下每一位的数值。你发现了什么规律?
- 2用4位二进制数表示5、9和15。你用了哪些位?
- 3从0开始,一次又一次地按“+1”。每次都会变化的是哪一位?变化最少的是哪一位?
- 4用 4 位数到 15,再按一次 +1。会发生什么?为什么?
- 5切换到 8 位。你能表示的最大数是多少?将它与 2⁸ - 1 对照一下。
- 6开启负数。现在最左边的位表示什么值?试着表示 -1 和 -128。
- 7选择“构造数字”,完成五个目标。试着从最大的位开始。
模型
假设
- 与普通数字一样,书写位时将最高有效位放在左边。
- 无符号数的范围是 0 到 2ⁿ - 1。启用负数后,将使用二进制补码,最左边一位的权值为 -2ⁿ⁻¹。
- 在最大值上加 1 会回到最小值,就像真实计算机的定长运算一样。这称为溢出。
- 挑战数字来自一个固定序列,因此每个班级看到的目标和顺序都相同。
在课堂上试试这个实验
- Q1将二进制数 10110 转换为十进制数。
- Q2使用 8 位将十进制数 45 转换为二进制数。
- Q3要存储不超过 1000 的数,需要多少位?
- Q4为什么末尾是 1 的二进制数总表示奇数?
- Q5在 8 位二进制补码中,1111 1110 表示多少?请解释你是如何得出答案的。
常见问题
计算机为什么使用二进制而不是十进制?
电子开关只需处理关和开两种状态时,很容易做到可靠。要区分表示十进制数字的十种不同电压级别,则要困难得多,也更容易出错。
什么是字节?
一个字节是 8 位。它可以存储 256 种不同的值(从 0 到 255),也可以存储一个普通英文文本字符。
为什么十六进制很有用?
很长的二进制数很难阅读。因为 16 = 2⁴,每四位正好对应一位十六进制数,所以程序员会用十六进制简写二进制数,例如颜色代码 #FF8800。