第2章
用二进制来理解数据
热身准备
进入正题之前,我为大家准备了一些热身问题,大家可以看看自己是否能够准确回答。
问题
-
32 比特是多少字节?
-
二进制数 01011100 用十进制表示是多少?
-
将二进制数 00001111 左移 2 位,得到的结果是原数的几倍?
-
以 2 的补码形式表示的 8 位二进制数 11111111 用十进制表示是多少?
-
以 2 的补码形式表示的 8 位二进制数 10101010 用 16 位二进制表示是多少?
-
要反转图案中的一部分点,应该使用哪种逻辑运算?
怎么样?有些问题是不是无法简单回答出来呢?下面给出笔者的答案和解析供大家参考。
答案
-
4 字节
-
92
-
4 倍
-
-1
-
1111111110101010
-
逻辑异或运算
解析
-
由于 8 比特=1 字节,所以 32 比特就是 32 ÷ 8 = 4 字节。
-
将二进制数的各位数字乘以其对应位权并求和就可以转换成十进制数。
-
二进制数左移 1 位,结果变成原来的 2 倍,因此左移两位就会变成原来的 4 倍。
-
在 2 的补码形式中,所有位都是 1 的二进制数表示十进制的 -1。
-
用原数最高位的 1 填充扩展出的各位即可。
-
逻辑异或运算会将所有 1 对应的位反转,逻辑非运算则会将所有的位反转。
本章要点
要在头脑中理解程序的工作原理,非常重要的一点就是要了解信息(数据)在计算机内部是以怎样的形式表示的,又是用怎样的方法来运算的。用 C 语言、Java 等高级编程语言编写的程序中所描述的数值、字符串、图案等信息,在计算机内部都是用二进制来处理的。也就是说,如果掌握了用二进制表示信息的方式和对二进制进行各种运算的方式,就可以理解程序的工作原理。那么,计算机为什么要用二进制来处理信息呢?本章的开头我们先来弄清楚具体原因吧。
dIwtAns6JmUePa7WnDqPTFCmVJqFfSMtGgZ1Oi7QMyAoer1NQG/fOSHvYxsksTeA