我对二进制的理解

理解进制的重要方法是类比我们熟知的十进制

10进制

一个正常的人类,拥有10根手指,每根手指代表1个信息,那么两双手掌便可表达10个信息。1, 2, 3, …, 10。

所以人类当初用 逢10进1,也就是10进制。

什么是逢10进1?即每超过9进一位, 9, 10, 99, 100, 999, 1000, …

那么理解二进制难吗?其实觉得难只是不习惯罢了。

2进制

通过上述解释,我们可以明白2进制就是 逢2进1

即0, 1, 10, 11, 100

那么我们来类比一下(两边在数值上并不相等,只是比较他们的进位方式)。

0 -> 1 相当于 0 -> 1

1 -> 10 相当于 9 -> 10

11 -> 100 相当于 99 -> 100

这仔细想想不难理解吧,我相信难的是怎么能一眼看出 二进制数所表示的 十进制数

如果你刚刚接触2进制,给你一个二进制数让你转十进制,而且不能用纸笔。想必你应该会这么干。

如(1010)2

此时你的心中,1是1,10是2,11是3,100是4,101是5,1010是10。

过了一段时间,经过一遍遍迭代,你迭代出来了。但如果此时给你一个长一点复杂点的2进制呢?

如(1101011)2

现在给你纸笔,你肯定会用一个公式。从右往左,(a_0)代表最右边第一位数,(n)指最左边最后一位数的下标。(这里即6)

(a_02^0 + a_12^1 + a_22^2 + … + a_n2^n)

当老实的你写完这个式子的时候,已经过去30秒了,当然最后还是算出了答案。

那如果此时,我要求你在15秒内答出呢?那么可以用下面这个方法。

1 1 0 1 0 1 1
64 32 16 8 4 2 1

当前位如果为1时,则加上下面的数字,否则不加。

(64 + 32 + 8 + 2 + 1 = 107)

对这就是对上面那个公式的简化版本,相信聪明的你一定懂了。

那么这个方法和那个公式是什么原理呢,从而避免了迭代造成过多的时间开销?

这时候我们用上述方法来描述十进制

比如: 114 (恼)

(110^2+110^1+1*10^0=100 + 10 + 4 = 114)

二进制其实也是同理,只不过他的进制为2罢了

比如: 01101

(02^4+12^3+12^2+02^1+1*2^0=0+8+4+1=13)

其它进制也是同理,主要你要熟悉到底什么是进制,就是逢N进1,但具体怎么领悟就是时间与思考的问题了。

10进制转换2进制

如果我还有业余时间的话会去谈谈我对”短除法”转2进制的理解。

同理,也可以通过类比的方法也能理解。

记住二进制短除法中的数其实就是 二进制在十进制下的投影

第一次写这种内容,小学生写的,如果把你搞混了,实在抱歉:-(

当然如果有用,那就十分感谢啦~

Original: https://www.cnblogs.com/littleblacklb/p/16220171.html
Author: littleblackLB
Title: 我对二进制的理解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/583274/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • CPU架构对redis的性能影响

    CPU架构对redis的性能影响 主流CPU架构 一个CPU处理器中通常有多个运行核心,每一个运行核心称为一个物理核,每个物理核都可以运行应用程序。每个物理核都拥有 私有的一级缓存…

    Linux 2023年5月28日
    0110
  • JVM 配置参数 -D,-X,-XX 的区别

    转载请注明出处: 最近在安全护网行动,需要针对服务进行不断的安全加固,如 对服务的 log4j 的安全配置进行防护,对 fastjson 的漏洞进行安全加固等,最快的防护方法就是通…

    Linux 2023年6月14日
    0106
  • linux内核源代码组织结构

    linux版本 linux 3.6.24 第一个数字主版本号 第二个数字是偶数代表是稳定版 第三个代表修订次数 Original: https://www.cnblogs.com/…

    Linux 2023年6月7日
    0103
  • 如何使用CMake构建c++项目

    1. c++项目构建与CMake简介 在Windows系统上我们通常使用 Visual Studio(VS)来生成我们的c++项目。我们只需在VS相应的层次目录中添加相应的文件即可…

    Linux 2023年6月14日
    0112
  • Alpine系统

    Alpine Alpine 1.Alpine是什么 2.Alpine的有点 3.安装Alpine 4.Alpine常用命令 软件管理 服务管理 修改IP地址 1.Alpine是什么…

    Linux 2023年6月13日
    0131
  • 最简单的,在win,linux中,用powershell,自动获取Let’s Encrypt证书方法

    powershell传教士原创 2020-04-12,2022-05更新 Let’s Encrypt证书有效期3个月,支持泛域名【*.你的网站.net】。支持n天内(一…

    Linux 2023年6月14日
    0102
  • 误删除系列二:恢复已经删除文件

    背景:基于对恢复的好奇心,所以写一系列相关的博客,在linux没有回收站这一说法,通过rm -rf file的操作,如何恢复 以下的讨论分为两种情况: 删除后进程还能找到情况 删除…

    Linux 2023年6月7日
    071
  • 在docker中使用主机串口通讯

    在进行软件docker化的过程时,很大的一个阻碍就是软件与各种外围硬件设备的交互,网口通信的设备能够很容易地接入容器,但是串口设备则要复杂一些。本文讨论在windows和linux…

    Linux 2023年6月6日
    0105
  • redis持久化存储

    redis持久化存储 redis多被用于缓存和消息中间件,当被用作缓存时,数据的读写都是在内存中进行的,而内存一旦在主机断电或者主机重启时里面的数据将被清空,为保证数据不被丢失,r…

    Linux 2023年6月7日
    0108
  • LeetCode-1047. 删除字符串中的所有相邻重复项

    题目来源 题目详情 给出由小写字母组成的字符串 S, 重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项…

    Linux 2023年6月7日
    0122
  • 前端之HTML

    一、HTML介绍 1.1 web服务本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 80…

    Linux 2023年6月14日
    082
  • docker save与docker export实现docker镜像与容器的备份

    本来想写一篇关于docker save/export/commit/load/import之间的关系的文章,后来看了看,已经有很多人写过了,我就不做重复工作了。 参见: docke…

    Linux 2023年6月6日
    0108
  • LAXCUS授权开源协议

    LAXCUS 授权许可证 第1版 本许可证仅针对LAXCUS分布式操作系统和衍生子版本,围绕LAXCUS分布式操作系统设计开发的硬件、硬件驱动程序、应用软件不受本许可证约束。 您对…

    Linux 2023年6月6日
    0121
  • win10安装redis

    下载地址:https://github.com/MicrosoftArchive/redis/releases 这个太慢了 https://github.com/ServiceSt…

    Linux 2023年5月28日
    0124
  • 个人学习-Linux-IO多路复用

    [1]confirmwz博客:Epoll原理解析https://blog.csdn.net/armlinuxww/article/details/92803381; [2]hech…

    Linux 2023年6月6日
    084
  • Bash编程中对字符串的操作

    Bash的字符串操作 String="Hello World" #获取字符串长度,获取字符长度的变量调用应该使用${},这里大括号是必须的 #例1-1 echo…

    Linux 2023年6月13日
    0114
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球