程序是怎样跑起来的-第02章 数据是用二进制数表示的

来源:互联网 发布:一淘登录用淘宝账号吗 编辑:程序博客网 时间:2024/06/05 00:50

第02数据是用二进制数表示的

热身问题

1:32位是几个字节?

    4字节:8位为一个字节,所以是4个字节。


2:二进制数0101 1100转换成十进制是多少?

    0*128+1*64+0*32+1*16 + 1*8+1*4+0*2+0*0 = 4+8+16+64 = 92:将二进制各位数与位权相乘再相加即可。


3:二进制数0000 1111左移两位后,会变成原数的几倍?

    4被:因基数为2,左移1位即为原值两倍,所以左移2位为原值4倍。


4:补码形式表示的8位二进制数1111 1111,用十进制数表示的话是多少?

    -1:因+1为1 0000 0000,9位,溢出一位,即为0,所以为-1;1111 1111的补数为求反加1,为0000 0001,因此补码表示的1111 1111为-1。


5:补码形式表示的8位二进制数1010 1010,用16位的二进制数表示的话是多少?

    前面加8个1。此为符号扩充,符号扩充就是指在保持值不变的情况下将其转换成16位和32位的二进制数。不管是正数还是用补数表示的负数,都只需要用符号位的值(0或者1)填充高位即可。这就是符号扩充的方法。


6:数值、字符串和图像等信息在计算机内部是以什么形式表现的?

    都是以二进制数值的形式来表现的。


2.1 用二进制数表示计算机信息的原因

    IC(集成电路(Integrated Circuit))的特性,决定计算机的信息数据使用二进制数来处理更加合适。计算机处理信息的最小单位--位,就相当于二进制中的一位。位的英文bit是二进制数位(binary digit)的缩写。二进制数的位数一般是8位、16位、32位等,也就是8的倍数(binary |ˈbaɪnəri| adj 由两部分组成的 二进制的;digit |ˈdɪdʒɪt| noun [0到9中的任何一个] 数字)。

    8位二进制数被称为一个字节(由bite一词衍生而来:byte)。字节是最基本的信息计量单位。位是最小单位,字节是基本单位(内存和磁盘都使用字节单位来存储和读写数据,使用位单位则无法读写数据。因此字节是信息最基本的单位)(byte |baɪt| noun 字节)。


2.2 什么是二进制数

    二进制数的值转化成十进制数的值,只需要将二进制数的各位的值和位权相乘,然后将相乘的结果相加即可。十进制的基数为10,二进制的基数为2,若最右侧位数为1,以此向左逐个增加位数,各位的位权相当于基数的位数减1次冪。


2.3 移位运算和乘除运算的关系

    位移运算指的是将二进制数的值的各个位依次向左或向右移动的运算。分为左移运算与右移运算。对于左移运算,右侧空出来的位直接补0,若移位操作使最高位溢出,溢出部分直接丢弃。在不存在溢出的情况下,每左移一位,二进制数值相应增加1倍。



2.4 便于计算机处理的“补数”

    二进制数中表示负数时,一般会把最高位数作为符号使用,因此我们把这个最高位称为符号位。符号位是0时表示正数,符号位是1时表示负数。

    计算机在做减法运算时,实际上内部是在做加法运算。用加法运算来实现减法运算,为此,表示负数时就需要使用二进制的补数。补数就是使用正数来表示负数。

    以用8位表示-1的补数为例:-1的补数为1111 1111,-1的补数加上1等于1 0000 0000,溢出的最高位直接丢弃,即表示0。所以一个数的补数是将二进制的各位取反,再加1

    补数求解的变换方法是取反+1”(无论正负一个数取反+1都得到他的相反数(这些都是建立在使用有限位表示数,溢出的位直接丢弃)。


2.5 逻辑右移和算术右移动的区别

    右移位运算分为逻辑右移与算术右移。移动后最高位补0称为逻辑右移动。右移后最高位补原本最高位的值称为算术右移,以负数为例,右移后依然是负数,正数右移后依然是正数。

    符号扩充:以8位二进制数为例,符号扩充就是指在保持值不变的情况下将其转换成16位和32位的二进制数。不管是正数还是用补数表示的负数,都只需要用符号位的值(0或者1)填充高位即可。这就是符号扩充的方法。

0 0