文章list 计算机底层知识之CPU 计算机底层知识之二进制 你能所学到的知识点 ❝ 计算机精度缺失 「推荐阅读指数」 ⭐️⭐️⭐️ 如何用二进制表示小数 「推荐阅读指数」 ⭐️⭐️⭐️⭐️⭐️ 计算机精度缺失的原因...在说明计算机如何用二进制数表示小数的具体方法前,我们先尝试将1011.0011这个有小数点的二进制数转换成十进制数。 小数点「前面」部分的转换方法在计算机底层知识之二进制中介绍过。...而EXCESS系统中,126代表-1 「尾数部分」:根据正则表达式的规则,小数点前面的第1位是1,因此「尾数部分」1000···实际上表示的是1.1000··· ---- 二进制数和十六进制数关系 在以...「位」为单位表示数据时,使用二进制数很方便,但如果位数太多,看起来很麻烦。...因此,在实际程序中,经常用「十六进制数」来替代「二进制数」。 在一些高级语言中,只需要在数值的开头加上0x就可以表示十六进制数。 ❝二进制数的4位,正好相当于十六进制数的1位。
一 个浮点数用两个部分表示,尾数和2的幂,尾数代表浮点上的实际二进制数,2的幂代表指 数,指数的保存形式是一个0到255的8位值,指数的实际值是保存值(0到255)减去127,一个 范围在-...尾数是后面的二进制数10010000000000000000000 在尾数的左边有一个省略的小数点和1,这个1在浮点数的保存中经常省略,加上一个1和小数 点到尾数的开头,得到尾数值如下:...综上所述,以10^7的最大跨度为窗口(小于10^7也可以,如:10,100…10000等,但决 不能大于它,那样会超出精度范围),定位浮点数的量级,然后取出7位尾数的整数值存于长 整形数里,再调整阶码...小于1.175494E-38的数仍可以显示一些,但最好不用,以免出 错。我采用直接判断的方法,剔除此种情况。 在计算机里结合律不成立,(a*b)*c!...计算机使用二进制数计算,能有效利用电子器件高速开关的特性,而人习惯于十进制数 表示,二进制和十进制没有方便的转换方法,只能通过大量计算实现,浮点数的十进制科学 记数法显示尤其需要大量的运算,可见
二进制,多么熟悉的字眼,相信只要是学计算机的,二进制绝对是入门的第一节课必学的知识点。你肯定经常会听说“计算机底层数据传输就是通过二进制流”、“二进制就是0和1”等等说辞。...[20220525105531.png] 二进制也可用于描述已编译的软件程序,一旦程序被编译,它就会包含称为“机器代码”的二进制数据,可以由计算机的CPU执行。 二进制是如何工作的?...在计算的早期,将数据输入计算机的唯一方法是轻按开关或输入打孔卡或打孔纸带。 二进制例子 [二进制数示例] 二进制中没有 2、3、4、5、6、7、8 或 9....128 第二步:找第二个最大的2的次幂数 首先 200 - 128 = 72 72下一个最大的2的次幂数就是 64 第三步:以此类推 72 - 64 = 8 答案就出来了:200 = 128 + 64...总结 二进制0和1,两个简简单单、普普通通的数字构成了复杂的计算机系统,对于人类文明的进步可谓是不可衡量的,那么本文主要介绍了什么是二进制、二进制如何工作、二进制的例子,以及二进制和十进制互换算。
幂 (**) 幂运算符用于计算一个数的另一个数次幂。...整除(//)的结果总是整数,且向下取整。 取模(%)的结果的正负号与被除数相同。 幂(**)运算符可以计算非常大的数,但请注意Python的整数大小限制(取决于系统架构,通常是很大的数)。 4....左移(<<) 左移运算符数的二进制表示向左移动指定的位数,右边超出的位被丢弃,左边超出的部分用0填充。左移相当于乘以2的幂次方。...在实际应用中,布尔值经常用于控制循环的继续执行、作为函数的返回值以表示成功或失败等。...进阶案例 字节串在网络通信中的应用 在网络编程中,经常需要发送和接收字节串形式的数据。以下是一个简单的TCP客户端示例,展示如何发送字节串数据。
【教学目的与要求】 1、熟悉数制的概念; 2、掌握位权表示法; 3、熟练掌握二进制与十进制之间的转换方法。 【课时安排】 1课时。...大家观察一下这个例子,以小数点为界,整数部分自右向左,依次是基数的0次、1次、2次、3次幂。小数部分,自左向右,分别是基数的-1次、-2次、-3次幂。...大家再看一下:2856.42这个十进制数,它的值是怎么算出来的呢? 这就叫做按权相加法。也就是让每一位上的数字字符乘以它所代表的权。那么,这种方法有什么用呢?这就是本节课的重点内容。...数制转换 大家都知道,计算机运算时采用的是二进制,但人们在使用计算机解决实际问题时通常使用十进制,这就有一个十进制向二进制转换或由二进制向十进制转换的过程。...也就是说,在使用计算机进行数据处理时首先必须把输入的十进制数转换成计算机所能接受的二进制数;计算机在运行结束后,再把二进制数转换为人们所习惯的十进制数输出。
3.2 二进制转十进制 将一个二进制数转换为十进制数,可以按权展开法计算。具体步骤如下: 将二进制数从右至左,依次乘以2的幂次。 将所有结果相加,即为对应的十进制数。...3.4 八进制转十进制 将八进制数转换为十进制数,可以按权展开法计算。具体步骤如下: 将八进制数从右至左,依次乘以8的幂次。 将所有结果相加,即为对应的十进制数。...3.6 十六进制转十进制 将十六进制数转换为十进制数,可以按权展开法计算。具体步骤如下: 将十六进制数从右至左,依次乘以16的幂次。 将所有结果相加,即为对应的十进制数。...二进制小数到十进制: 将二进制数的小数部分从左至右,依次乘以2的负幂次。 将所有结果相加,即为对应的十进制数。...例如,将十进制数转换为二进制以设计二进制计数器。 6.4 编程语言中的应用 编程语言中经常需要处理不同进制的转换。
当哈希表中的条目数超出了加载因子与当前容量的乘积时,通过调用 rehash 方法将容量翻倍。 ...那如何计算才会分布最均匀呢?我们首先想到的就是%运算,哈希值%容量=bucketIndex,SUN的大师们是否也是如此做的呢?...15,假设h 的结果就是h本身,h >15,运算后的结果就是最后三位二进制做&运算后的值,最终,就是%运算后的余数,我想,这就是容量必须为2的幂的原因。...HashMap所有集合类视图所返回迭代器都是快速失败的(fail-fast),在迭代器创建之后,如果从结构上对映射进行修改,除非通过迭代器自身的 remove 或 add 方法,其他任何时间任何方式的修改...因此,面对并发的修改,迭代器很快就会完全失败。注意,迭代器的快速失败行为不能得到保证,一般来说,存在不同步的并发修改时,不可能作出任何坚决的保证。
一直在研究计算机如何用二进制表示事物的有关问题,其中有个问题被问了好几次——为什么 x86 架构使用8位字节?为什么不用其他大小呢?...,操作员在输入数字时要使用所有手指,因此尽管一些专业计算器具有更多列(译者注:也就是支持不止10位数的运算),但十列确实已经基本到了极限。...我个人认为这种整数表示方法似乎非常奇怪,为什么不直接使用更高效的二进制来存储整数呢?毕竟在早期的计算机中,效率非常重要!...理由3️⃣:8是2的幂? 许多人说将CPU的字节大小设计成2的幂是很重要的一件事。我无法确定这是否是正确的,而且“计算机使用二进制所以将字节设计成2的幂很好”这种解释并不能令我满意。...7位是可以将所有英文字母+标点符号都放入其中的最小大小。 8比7更好(因为它是2的幂次方)。 一旦出现流行的 8-bit 计算机并且它们运作良好,我们就希望保持相同的设计以实现兼容性。
. 、-> 操作符中的一些操作和二进制有关系,我们先铺垫一下二进制的和进制转换的知识。 二、二进制和进制的转换 我们经常听到2进制、8进制、10进制、16进制这样的讲法,那是什么意思呢?...: 首先还是忒从10进制讲起,其实10进制是我们生活中经常使用的,我们已经形成了很多尝试 十进制中满10进1 10进制数字每一位都是0~9的数字形成的 其实二进制也是一样的 二进制中满2进1 2进制的数字每一位都是...0~1的数字组成 那么1101就是二进制的数字了 2.1 2进制转10进制 1101=1*2的零次幂+0*2的一次幂+1*2的二次幂+1*2的三次幂 注:从最低位开始计算(最右边计算最低位),依次往左边的高位计算再累加...1101 0101转换为16进制数为: 2D71CD5 三、原码补码反码 整数的2二进制数表示方法有三种,即原码、反码和补码 有符号整数的三种表示方法均有符号位和数值位两部分,2进制序列中,最高位的...正整数的原反补码都是相同的,但是负数的有三种的表示方法: 原码:直接将数值按照正负数的形式翻译成二进制数就是原码 反码:将原码的符号位不变,其他位按位取反 补码:反码+1得到补码。
它们与十进制的换算关系与二进制相同。 下面我们研究八进制与二进制之间的换算关系。 对于八进制来说,它的权重是8的n次幂,也可以表示成权重是2的3n次幂。...八进制的数码为0~7,0~7的数码用二进制表示可以写成:K=。如果此时的权重是8的n次幂(2的3n次幂),那么此位的数码乘以权重(K*8的n次幂),用二进制表示就是:。...利用四位二进制表示十进制数的个位或者十位等。 二进制码的10110,表示十进制的22,利用BCD码表示则为0010 0010。 在计算中会经常遇到负数,那么在数字电路中,怎么样来表示负数呢?...0011表示正三,1011表示负三,这样的表示方法对吗?首先表示方法没有对错之说,只是符合不符合场合。这个表示方法是不符合当代计算机中的表示方法的。在当代计算机中,不仅仅要描述数的表示,还要表示运算。...在电路中大多数都是二进制的信息,那我们如何能够看得到汉字或者字母呢?对于字母来说,我们来介绍一下ASCII码。
但术业有专攻,市面上那么多开源框架且每个框架又经常迭代升级,花精力深入了解每一个框架源码不太现实,本文会以业务视角罗列工作中大家需要熟知的一些知识 本篇文章的目录: 首先,为什么使用kafka?...消息传输的格式 纯二进制的字节序列。当然消息还是结构化的,只是在使用之前都要将其转换成二进制的字节序列。 消息传输协议 点对点模型。...一个幂等性 Producer 能够保证某个topic的一个分区上不出现重复消息,但无法实现多个分区的幂等性。...这批消息要么全部写入成功,要么全部失败。能够保证跨分区、跨会话间的幂等性。...read_committed:表明 Consumer 只会读取事务型 Producer 成功提交事务写入的消息 Kafka Broker 是如何存储数据?
早期cpu架构在运行位运算时 略微领先 + - 运算 大幅领先 * / % 运算 '&' 运算符 总结 两个二进制中对应的位置都为 1 结果的对应二进制为 1 '&'运算符可以用到奇偶判断中(二进制最低位为...1 则一定是奇数 为0 一定是偶数) '|'运算符 总结 两个二进制中对应的位置只要有一个1 结果的对应二进制为 1 '|'运算符经常用于设置多个属性 列如 createwindow 中 经常用到...'^'运算符 总结 二进制对应位置不一样 结果对应位置的二进制位1 反之为0 '^'运算符可以用来判断两个数是否相等 两个数一样进行'^'运算 一样就会返回0 '~'运算符 总结 对应的位置 0...变1 1变0 结果为负的了(这是计算机表示负数的一种方法 简单来说就是 数值最前面有个符号位 '~'运算符取负后 把数值前面的符号位改了 就变成负的了) '~'运算符可以用与 求负数 也可以用来求int...short long的最大最小值 '>>'运算符 把二进制向 左,右 移动 x位(x可以为任何数) (但是大于 数据类型大小*8 位没什么意义) 一般可以用来求二进制的幂(要是计算机自带3进制可以来求三进制的幂
简化二进制表示:由于每三位二进制数可以唯一地表示一个八进制数,因此八进制提供了一种比二进制更紧凑但比十进制更易于从二进制转换的表示方法。这在如手动计算或调试低级硬件时可能很有用。...3 进制转换的原理和算法 3.1 不同进制之间的转换规则 1)二进制与十进制的转换方法 二进制转十进制:位权相加法,例如二进制数 1010 转换为十进制数,从右向左依次将二进制数的每一位与 2 的幂相乘...2)八进制与十进制的转换方法 八进制转十进制:同样依据位权原理,八进制数的每一位乘以 8 的相应幂次然后相加。 十进制转八进制:除 8 取余法,直到商为 0 时,从下往上读取余数得到八进制。...3)十六进制与十进制的转换方法 十六进制转十进制:十六进制数中的 A ~ F 分表表示 10 ~ 15,位权计算时同样乘以 16 的相应幂次,然后相加。...4)二进制与八进制、十六进制的转换方法 二进制转八进制:每三位二进制可以转换一个八进制数,不够三位在左侧补零。 二进制转十六进制:每四位二进制数可以转换一个十六进制数,不够四位左侧补零。
前言 我们经常碰到 CRC 这个概念,尤其是在通信领域。但是 CRC 的原理是什么呢?我们有必要了解一下。...理解 CRC,最为关键的就是理解 CRC 校验码的生成方法。 CRC 校验码生成方法是对原始数据采用特定的多项式(对应一个二进制数)进行模2除法运算,得到的余数即为 CRC 校验码。...CRC 校验码计算示例 由以上分析可知,既然除数是随机的,或者按标准选定,所以 CRC 校验的关键是如何求出余数,也就是 CRC 校验码。 下面以一个例子来具体说明整个过程。...下面是具体的计算过程: (1)首先把生成多项式转换成二进制数,由P(X) = X4 + X3 + 1可以知道,它一共是5位(总位数等于最高位的幂次加1,即 4+1=5),然后根据多项式各项的含义(多项式只列出二进制值为...CRC 校验码的计算示例,大家应该对这种看似很复杂的 CRC 校验原理和计算方法应该比较清楚了。
又什么是二进制数呢?更进一步地,我们如何使用二进制进行加减乘除运算呢?接下来,我们将一一解答这些问题。什么是二进制数那么,什么是二进制数呢?...这些位权也可以被称为次幂,例如最高位的位权就是 2 的 7 次幂,第二位的位权就是 2 的 6 次幂,以此类推。在二进制数的运算中,每次运算都是以基数 2 作为底数。而十进制数的基数则是 10。...具体的操作可以参考下图:移位运算在计算机中被广泛应用,可以用于快速进行乘以或除以2的幂次的运算。同时,移位运算也可以用来提取或插入二进制数中的特定位。...以8位二进制数为例,符号扩展的目标是将其转换为16位或32位二进制数,而保持数值不变。对于一个8位正数二进制数0111 1111,很容易得到正确的16位结果0000 0000 0111 1111。...我们了解到计算机底层使用二进制来表示和处理信息的原因,并学习了二进制数的转换方法和位权的概念。我们还探讨了移位运算和二进制数的运算,并介绍了移位运算在计算机中的应用。
任何 2 的整数幂 - 1 得到的二进制都是 1,如:16 - 1 = 15(1111);32 - 1 = 31(11111) 而 n-1 与 hash 做的是与运算(&),与运算是 两个都为1,才为1...} 我们下面看看tableSizeFor()这个方法是如何计算的,这个方法的实现原理很巧妙,源码如下: /** * Returns a power of two size for the given...但是,请注意,在构造方法中,并没有对table这个成员变量进行初始化,table的初始化被推迟到了put方法中,在put方法中会对threshold重新计算。...扰动函数 HashMap 中的扰动函数是一个通过对 key 值类型自带的哈希函数生成的散列值进行位移计算来扰乱散列值,以达到降低哈希碰撞的概率的方法。...源码中对应的是 hash(),但具体是如何进行移位和降低碰撞概率的??
Workshop 1: Workshop1涉及到的主题: 二进制 十六进制 “与”操作 1:二进制数学 作为了解网络是如何工作的,你需要对二进制算法有很好的理解。这是为什么呢?...最前面的0是可选的 1.2 二进制表示法 基于上面的介绍,现在我们可以看到,为了计算出一个二进制数的值,就像在十进制中所做的一样,我们只需要将列的值相加即可。...你还需要牢记的是一个所有位都是二进制1的八位位组(即一个包含8比特位的位组)等价于十进制的255,也就是 1111 1111(二进制) = 255(十进制) 1.3 将十进制转换为二进制 最简单的方法是用十进制数减去适当的...2的若干次幂,直到结果为零时停止,然后计算出哪一列需要标识1,而哪一列没有使用到,用0对其进行标记。...继续深入今天的主题,我们会看到所有连接到Internet上的计算机都有一个以数字表示的地址,称为网络地址或IP地址。
我们都知道,计算机的底层都是使用二进制数据进行数据流传输的,那么为什么会使用二进制表示计算机呢?或者说,什么是二进制数呢?在拓展一步,如何使用二进制进行加减乘除?二进制数如何表示负数呢?...这个位权也叫做次幂,那么最高位就是2的7次幂,2的6次幂 等等。二进制数的运算每次都会以2为底,这个2 指得就是基数,那么十进制数的基数也就是 10 。...请看下一节 便于计算机处理的补数 刚才我们没有介绍右移的情况,是因为右移之后空出来的高位数值,有 0 和 1 两种形式。要想区分什么时候补0什么时候补1,首先就需要掌握二进制数表示负数的方法。...下面介绍一下符号扩展:将数据进行符号扩展是为了产生一个位数加倍、但数值大小不变的结果,以满足有些指令对操作数位数的要求,例如倍长于除数的被除数,再如将数据位数加长以减少计算过程中的误差。...以8位二进制为例,符号扩展就是指在保持值不变的前提下将其转换成为16位和32位的二进制数。
领取专属 10元无门槛券
手把手带您无忧上云