为什么用二进制进行数据传输、二进制概述及移位运算和乘除的关系

本文涉及的产品
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 1个月
简介: 为什么用二进制进行数据传输、二进制概述及移位运算和乘除的关系

一、为什么用二进制进行数据传输


计算机内存都是由IC电子原件组成的,其中CPU和内存也是IC电子原件的一种


CPU图:



内存条图:



CPU和内存使用IC电子原件作为基本单元,IC电子原件有不同钟形状,但是其内部的组成单元称为一个个的引脚。有人说CPU和内存内部都是超大规模集成电路,其实IC就是集成电路(Integrated Circuit)


IC元件切面图:



IC元件两侧排列的四方形就是引脚,IC的所有引脚,只有两种电压:0V 5V,IC的这种特性,也就决定了计算机的信息处理只能用0和1表示,也就是二进制来处理。一个引脚可以表示一个0或1,所以二进制的表示方式就变成0,1,10,11,100,101等,虽然二进制数并不是专门为引脚来设计的,但是和IC引脚的特性非常吻合


计算机的最小集成单位为 位 ,也就是 比特(bit),二进制数的位数一般为8位、16位、32位,64位,也就是8的倍数,为什么要跟8扯上关系?因为在计算机中,把8位二进制数统称为一个字节,一个字节有8位,也就是由8个bit构成


为什么1个字节等于8位?因为8位能够涵盖所有的字符编码


字节是最基本的计量单位,位是最小的单位


用字节处理数据时,如果数字小于存储数据的字节数(= 二进制的位数),那么高位和数学的数字表示是一样的,左侧表示高位,右侧表示低位。比如这个六位数用二进制数来表示就是100111,只有6位,高位需要用0填充,填充完后是00100111,占一个字节,如果用16位表示就是0000 0000 0010 0111占用两个字节


我们一般口述的32位和64位的计算机一般就指的是位数,32位一次可以表示4个字节,64位一次可以表示8个字节的二进制数


我们一般在软件开发中用十进制数表示逻辑运算,也会被计算机转换为二进制数处理。对于二进制数,计算机不会区分它是图片、音频文件还是数字,这些都是一些数据的结合体


二、二进制数概述


我们把00100111 这个数转换为十进制,二进制转换为十进制数,直接将各位置上的值 * 位权即可


二进制转换十进制示意图:



也就是说,二进制数代表的 0010011转换成十进制就是39,这个39并不是3和9两个数字连着写,而是3 * 10 + 9 *1 ,这里面的 10,1 就是位权,以此类推,上述例子中的位权从高为到低位以此就是 7 6 5 4 3 2 1 0 。这个位权也叫做次幂,那么最高位就是2的7次幂,2的6次幂等等。二进制数的运算每次都会以2为底,这个2指的就是基数,那么十进制的基数也就是10。在任何情况下位权的值都是 数的位数 -1,那么第一位的位权就是 1 -1 =0,第二位的位权就是 2 -1=1,依次类推


其他进制转换的可参考我以前的博客:


(1条消息) 进制转换、原码、反码、补码及位运算详解_夏志121的博客-CSDN博客_进制转换器补码


https://blog.csdn.net/m0_61961937/article/details/124903628?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166459983716800180621267%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166459983716800180621267&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-124903628-null-null.nonecase&utm_term=%E8%BF%9B%E5%88%B6%E8%BD%AC%E6%8D%A2&spm=1018.2226.3001.4450


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


跟十进制一样,二进制也能加减乘除,只要注意逢2进位即可。二进制的运算,也是计算机程序所特有的运算,因此了解二进制的运算必须要掌握


移位运算是指将二进制的数值的各个位置上的元素左移和右移操作


移位过程图:



上述例子还是以39为例,我们先把十进制的39转换为二进制的 0010 0111,然后 向左移位 << 一个字节,也就变成了 0100 1110 ,那么再把此二进制数转换为十进制数就是上面的78,十进制的78竟然是十进制的39的2倍关系。在让 0010 0111左移两位,也就是 1001 1100,得出来的值是156,相当于扩大了四倍


因此可以得出结论,左移相当于是数值扩大的操作


相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
目录
相关文章
|
8月前
|
SQL 分布式计算 监控
在数据传输服务(DTS)中,要查看每个小时源端产生了多少条数据
【2月更文挑战第32天】在数据传输服务(DTS)中,要查看每个小时源端产生了多少条数据
82 6
|
8月前
|
存储 SQL NoSQL
数据传输DTS同步问题之同步失败如何解决
数据传输服务(DTS)是一项专注于数据迁移和同步的云服务,在使用过程中可能遇到多种问题,本合集精选常见的DTS数据传输问题及其答疑解惑,以助用户顺利实现数据流转。
|
8月前
|
Cloud Native NoSQL 关系型数据库
数据传输DTS校验问题之校验报错如何解决
数据传输服务(DTS)是一项专注于数据迁移和同步的云服务,在使用过程中可能遇到多种问题,本合集精选常见的DTS数据传输问题及其答疑解惑,以助用户顺利实现数据流转。
|
8月前
DTS数据传输延迟可能有多种原因
【1月更文挑战第16天】【1月更文挑战第79篇】DTS数据传输延迟可能有多种原因
316 2
|
8月前
|
NoSQL Redis 数据库
数据传输DTS中金融云跨账号同步Redis,增量校验报错了
【1月更文挑战第16天】【1月更文挑战第80篇】数据传输DTS中金融云跨账号同步Redis,增量校验报错了
119 1
|
5月前
|
存储 安全 关系型数据库
跨越地域的数据传输大冒险!如何轻松更换DTS实例地域,全面攻略揭秘!
【8月更文挑战第15天】在数字时代的浪潮中,数据传输服务(DTS)是企业跨地域扩张的重要桥梁。然而,更换DTS实例地域就像是一场冒险旅程,充满了未知和挑战。本文将带你踏上这场跨越地域的数据传输大冒险,揭示如何轻松更换DTS实例地域的秘密。无论你是追求速度的迁移高手,还是成本敏感的手动操作者,这里都有你需要的答案。让我们一起探索这个神秘的世界,解锁数据传输的无限可能!
65 0
|
5月前
|
关系型数据库 MySQL OLAP
数据传输DTS是什么?
【8月更文挑战第30天】数据传输DTS是什么?
494 3
|
7月前
|
关系型数据库 MySQL 分布式数据库
PolarDB操作报错合集之当使用DTS(数据传输服务)同步的表在目标库中进行LEFT JOIN查询时遇到异常,是什么导致的
在使用阿里云的PolarDB(包括PolarDB-X)时,用户可能会遇到各种操作报错。下面汇总了一些常见的报错情况及其可能的原因和解决办法:1.安装PolarDB-X报错、2.PolarDB安装后无法连接、3.PolarDB-X 使用rpm安装启动卡顿、4.PolarDB执行UPDATE/INSERT报错、5.DDL操作提示“Lock conflict”、6.数据集成时联通PolarDB报错、7.编译DN报错(RockyLinux)、8.CheckStorage报错(源数据库实例被删除)、9.嵌套事务错误(TDDL-4604)。
|
8月前
|
存储 Java 关系型数据库
数据传输DTS数据问题之数据写入异常如何解决
数据传输服务(DTS)是一项专注于数据迁移和同步的云服务,在使用过程中可能遇到多种问题,本合集精选常见的DTS数据传输问题及其答疑解惑,以助用户顺利实现数据流转。
数据传输DTS数据问题之数据写入异常如何解决