计算机基础_程序是怎样跑起来的_02_计算机的数据使用二进制数表示的

计算机的数据是用二进制数表示的

0、热身问题

  1. 32位是几个字节?
    4字节。
  2. 二进制 0101 1100 转换成十进制数是多少?
    92。
  3. 二进制 0000 1111 左移两位后,会变成原来的几倍?
    4倍。
  4. 补码形式表示的8位二进制数 1111 1111,用十进制数表示的话是多少?
    -1。
  5. 补码形式表示的8位二进制数 1010 1010,用16位的二进制数表示的话是多少?
    1111 1111 1010 1010。
  6. 反转部分图片模式时,使用的是什么逻辑运算?
    XOR运算(逻辑异或运算)。

数值、字符串和图像等信息在计算机内部都是以二进制数值的形式来表现的。


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

计算机内部是由IC(集成电路)这种电子部件构成的,而IC的所有引脚只有0V和5V两种状态。

即IC的一个引脚,只能表示两种状态(高电平、低电平)。

在这里插入图片描述

IC的这个特性,决定了计算机内部的信息数据只能使用二进制数来处理。

39(十进制数)     ---->    0010 0111(二进制)
'A'(文字) 	  ---->    0100 0001(二进制)

2、什么是二进制数?

生活中最常使用的是十进制,即0~9,逢十进一。

所以“二进制数”简单理解就是:每个位的数值不超过1,即只有0、1。

在这里插入图片描述

二进制数 0010 0111 转十进制数的过程。

在这里插入图片描述


3、移位运算和乘除运算的关系

移位运算:将二进制数值的各数位进行左右移位的运算。

注意:无论程序中的数几进制的,在计算机内部都会转换为二进制数进行存储,因此都能进行移位运算。

我们将二进制数“0010 0111”左移两位后,其对应的十进制数会如何变化?

在这里插入图片描述

明显可以看出,二进制数左移2位后,其对应的十进制数等价于乘以4。

所以,二进制左移后就会变成原来的2倍、4倍、8倍……

同理,十进制左移后就会变成原来的10倍、100倍、1000倍……

后面我们会讲到,右移1位相当于除以2,注意是“算术右移”,我们后面会提到。


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

二进制数表示负数时,会把最高位当作“符号位”来使用。

符号位是0表示正数,1则表示负数。

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

补数:用正数来表示负数,即负数以“其绝对值的补码形式”来表示。

如何求补数:将二进制数的各位取反再加1即可(按位取反+1)。

例如,使用8位二进制数来表示-1。

在这里插入图片描述

再举个例子,我们用16位二进制数来表示-100。

-100的绝对值是:100
100的原码:0000 0000 0110 0100
100的反码:1111 1111 1001 1011
100的补码:1111 1111 1001 1100

所以,-100的二进制表示为:1111 1111 1001 1100

接下来,我们再来说说,计算机用“加法操作”来完成“减法操作”。

以 “1-1 = 1 + (-1) = 0” 为例子。

在这里插入图片描述

当计算的结果为负数时,计算结果的值也是以“补数”的形式来表示,我们以“3 -5 = 3 + (-5) = -2”为例。

在这里插入图片描述

再来一个有趣的例子,我们都知道Java中的byte型占1个字节,而2^8 = 256,所以byte类型表示的范围是“-128 ~ 127”,那我们从0开始,一直+1,会出现什么情况呢?

@Test
public void test() {
    int count = 0;
    byte a = 0;
    while (count != 257) {
        System.out.printf("%-5d", a);
        a++;
        count++;
        if (count % 15 == 0) {
            System.out.println();
        }
    }
}

在这里插入图片描述


5、逻辑右移和算术右移的区别

右移有最高位补0和补1两种情况,右移分为逻辑右移和算术右移。

  1. 逻辑右移:高位补0
  2. 算术右移:正数,高位补0;负数,高位补1

以-4的逻辑右移2位和算术右移2位为例。

在这里插入图片描述

接着,顺便讲讲“符号扩充”。

符号扩充:在保持数值不变的情况下,将其转换成16位和32位的二进制数。

不管正负,只需要高位补“符号位”即可完成符号扩充。

在这里插入图片描述


6、掌握逻辑运算的窍门

算术运算:加减乘除的四则运算。

逻辑运算:对二进制数各数字位的0和1分别进行运算。

逻辑运算包括:

  1. 逻辑非(NOT运算)

    ANOT A
    10
    01
  2. 逻辑与(AND运算

    ABA AND B
    000
    010
    100
    111
  3. 逻辑或(OR运算)

    ABA OR B
    000
    011
    101
    111
  4. 逻辑异或(XOR运算)

    ABA XOR B
    000
    011
    101
    110

注:如有错误,敬请指正!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

窝在角落里学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值