首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

通过debug搞清楚.vue文件怎么变成.js文件

前言 我们每天写的vue代码都是写在vue文件中,但是浏览器却只认识html、css、js等文件类型。...所以这个时候就需要一个工具将vue文件转换为浏览器能够认识的js文件,想必你第一时间就想到了webpack或者vite。...本文以@vitejs/plugin-vue举例,通过debug的方式带你一步一步的搞清楚vue文件是如何编译为js文件的,看不懂你来打我。...通过打印我们发现stylesCode竟然变成了一条import语句,并且import的还是当前App.vue文件,只是多了几个query分别是:vue、type、index、scoped、lang。...lang || "js" } } }; } transformMain函数中的代码执行主流程,其实就是对应了一个vue文件编译成js文件的流程。

22010

「硬核JS」数字之美

我们可能注意到了,这样好像没办法表达负数 So,为了表示正与负,先辈们就发明了 「原码」,左边第一位腾出来,存放符号,正数用 0 来表示,负用 1 来表示 上图就是正负数的 原码,你可能在疑惑为什么上面表里我只画到了数字...,反码 的表示方式其实就是用来处理负数的,也就是除符号位不变,其余位置皆取反存储,0 就存 1,1 就存 0 那么我们再来看 同上,4 位反码的值存储范围也是 -7 ~ +7 当 原码 变成了 反码...~2046,这里指的是正数,因为还有负数,那指数范围就是 -1022~1023,如果没有偏移量的存在,指数就需引入符号位,因为有负数,还需要引入补码,无疑会使计算更加复杂,为了简化操作,才使用无符号的阶码...中数字范围 如果大家真的理解了上文,那么就会发现数字的范围其实有两个概念,最大正数和最小负数,最小正数和最大负数 而最终的数字范围即 最小负数~最大负数 并上 最小正数~最大正数 从S、E、M即数符、阶码...) 所以数字的最大正数和最小负数范围如下 1.7976931348623157e+308 ~ -1.7976931348623157e+308 如果超过这个值,则数字太大就溢出了,在 JS 中会显示

5.4K20

反码补码原码转换c语言程序_127的原码反码补码

注意:下面的例子都用有符号整数来举例 整数在数据中的储存 整数在数据中的储存方式是补码,所以如果要进行运算的话,那就需要将原码转换为补码再计算 正数的原反补的转换 正数的原码 原码就是一个十进制的数转换为二进制的数字...,1表示负数 正数的反码 正数的反码就是原码,不需要转化 正数的补码 正数的补码就是原码,同样不需要转换 所以正数在内存中的储存情况就是原码,因为正数的原码反码补码都一致。...负号的原反补的转换 负数的原码 如果是整数位(有符号整数)那么符号位就是1(不知道怎么来的话上面有图片), 然后其他的步骤和正数一样,只是符号位有区别 比如-10的原码就是 负数的反码 记住口诀就行...: 符号位不变,其他位全部取反 还是以-10为例 负数的补码 还是以-10为例 口诀就是:反码+1 所以负数由十进制数字变成原码,再变成补码的全过程是 正数负数的补码变成原码 正数...不需要转换,补码就是原码 负数 就是将上面的步骤反着来 补码-1变成反码,然后 符号位不变,其他全部取反 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

98420

深入理解计算机系统cp2:定点数的表示和运算

在深入理解计算机系统cp1:存储单位、数制、编码中解释了字符编码,我们知道了计算机是怎么字符转化为二进制的;本文将解释数字编码,介绍计算机如何数字转化为二进制,以及相关的运算问题。...我们发现,本来应该做的是加法运算,但实际上变成了减法运算(-1-3=-4)。 我们首先想到,可以通过将“正数负数”转化为“正数正数”来手动纠正这个错误。...那么怎么基于补数和模的概念将“正数负数”转化为“正数正数” —— 即怎么负数等价于一个正数呢?...假设我们现在有一个寄存器可以存放四位二进制数(此时,模为16),我们想要让 1011 变成 0000,最容易想到的办法就是 1011-1011=0000,注意这里是正数负数。...变成了 1011+0101,其结果是 10000,不要忘了寄存器只能存放四位,所以结果其实是 0000,恰好与我们“正数负数”时得到的结果无异。

86010

JAVA中有趣的移位操作

JAVA中也一样,存储和移位操作的都是补码,正数时都一样,负数时就要注意了。 << 左移位 在二进制格式下,所有的数字向左移动指定位数,左边的高位移出(舍弃),右边的低位多出来的空位补0。...如果觉得奇怪,想想有时候我们遇到过的场景:一个很大的int正数,乘一个正数后如果结果超过了int能存储的极限,往往就变成负数,或者一个很小的正数。...System.out.println("x左移2位\t= " + (x << 2)); // 正数超过极限可能变成负数负数变成正数也不奇怪吧 System.out.println...你呀总是能给我出点新花样.jpg 由于计算机存储和位移的都是补码,正数补码和原码一样,一直右移最后都变成了0,就像一直整除2,最后不管怎么除都是0。...对于正数没影响,对于负数来说,这样一移,直接变成正数了。

1.4K30

一日一技:二进制减法是如何进行的

在计算机中,负数是使用它的补码来表示的。所谓补码,就是反码+1。所谓反码,就是二进制数逐位取反。所谓逐位取反,就是1变成0,0变成1。...例如: 正数: 0101负数: 1101 其中最左边的0和1表示的是符号位,0为正数,1为负数。...所以,如果我直接说:数字5在计算机中是怎么储存的,是没有意义的。...应该说,数字5在8位整型下面是怎么储存的、在32位整型下面是怎么储存的: 00000101 # 8位整型 00000000000000000000000000000101 # 32位整型 所以,对于...,所以要把十进制负数转二进制补码的过程反过来 先转成十进制正数对应的二进制数:00000011为3 负号加上:-3,答案正确 这里需要说明的是,在计算机中做二进制数运算时,一定要明确是在多少位的整型前提下进行的

2.4K40

逆向知识第七讲,三目运算符在汇编中的表现形式,以及编译器优化方式

负数 -  CF   结果是-1 还原代码为: if(argc < 0) { ecx = -1; } 为正数的情况下 如果是正数 neg一下  0 - 正数负数, 那么CF借位了,其结果是...argc*nVar_4 : nVar_4/argc); 这个代码,无法优化,因为不知道变量是多少.看下汇编代码....这个很简单了. 1.局部变量给寄存器保存. 2.和9比较 3.小于怎么怎么做 4.大于怎么怎么做. 3.三木运算符的高级汇编表示,利用0和-1 高级代码: printf("%d\r\n", argc =...还是同上 1.如果> 9,那么 sub后结果是正数 2.neg之后. 0 - 正数负数  (0 - 正数的时候,借位了,所以CF位是1) 3.sbb 之后 负数负数 = 0, 然后- CF位 =...1.sub之后, 结果为负数 2.neg之后( 0 - 负数 = 取负数的绝对值(负负得正),有借位,所以CF = 1) 3.sbb 之后, 正数正数 - CF = 正数正数 - 1 = -1;

1.4K80

学弟不懂原码反码补码,气的我给女朋友讲了一夜

负数的二进制怎么搞?-2二进制-10?-3二进制-11?这样不太妥吧,怎么跟着这么一个负数?(问题一) 另外,这种不确定长度的二进制如果是一个数组我该怎么在计算机内存中找的到 (问题二) ?...因为负数原码的加法是相反的(即加一变成减一的操作),我们想着如果给负数原码中的数字01颠倒那么这个数字就会有比较有趣的事情。 原码中本来比较大的数字(-1,-2等)在这样转换后看起来变得很小。...对于补码,你确实无法直接看出它是多少,负数或许理解起来可能还有那么一点点抽象,我们该如何理解补码呢? 我是这么理解的:二进制数数据分为正负两个部分,分别表示两个区间: ? 什么意思呢?...这个也就是说你可以负数看成一部分,正数看成一部分。而每个部分的数值也是相同的:无论负数还是正数出去符号位,都是从 000 0000~111 1111(byte为例)分布。...其规则是正数反码等于原码,负数反码符号位不变,数值位0变成1,1变成0. 补码,计算机中数值都是以补码的形式进行计算的,它有效的解决负数加法问题,也可以使符号位直接参与运算。

45920

「硬核JS」令你迷惑的位运算

+[]]*~+[]] 嗯,就以这一段网红代码为开头吧 看此文之前,请一定要先阅读这篇文章 「硬核JS」数字之美 「硬核JS」数字之美 「硬核JS」数字之美 重要的事情说三遍,上面这篇文章就是给此文做准备的...0 来处理 其实不止是 JS ,很多语言的位运算都是如此 有符号&无符号 穿插一个小知识点, ECMAScript 整数有两种类型,即有符号整数(允许用正数负数)和无符号整数(只允许用正数) 在 ECMAScript...-2 十进制数字 0 的按位非即十进制 -1 上面说的都是正数,我们看一个负数的例子 十进制数字 -1 由于是负数,上文我们说过计算机中二进制存储负数为补码方式,所以我们要先求 -1 的补码,-1 二进制原码是...,无符号右移会给空位都补 0 ,不管符号位是什么,这样的话正数的有符号右移和无符号右移结果都是一致的 负数就不一样了,当一个负数进行无符号右移时也就是说负数的二进制码包括符号为全部右移,向右被移出的位被丢弃...,左侧用0填充,由于符号位变成了 0,所以结果总是非负的 那么可能就有人要问了,如果一个负数无符号右移 0 位呢,我们可以测试一下 让十进制 -1 进行无符号右移 0 位 -1 是负数,在内存中二进制存储是补码即

1.7K20

原码 反码 补码

如果必须用二进制表示有符号数,有个简单的方法,就是将这个空间分成两个相同的子集,一个子集用来表示正数,另一个表示负数。...于是,聪明的人做了个一个决定: 0 当成正数,即 +0,这样 0 的编码就只能是 00000000。那么 8 位二进制表示的正数范围仍然是: +0 —— +127。...可以负数整体向后”挪动 1 位“,例如, 将 8 位二进制表示的负数范围从 -127 —— -0 变成 -128 —— -1。 那么怎么整体挪动 1 位呢?方法就是反码 + 1。...于是乎,补码的定义如下: 对于正数来说,补码和原码保持一致。 对于负数来说,补码是反码加 1。...正数的原码、反码、补码保持一致。 负数的反码是最高位(符号位)不变,其余位(数值位)按位取反。补码是反码加 1。

28920

关于2的补码

负数在计算机中如何表示? 举例来说,+8在计算机中表示为二进制的1000,那么-8怎么表示呢? 很容易想到,可以将一个二进制位(bit)专门规定为符号位,它等于0时就表示正数,等于1时就表示负数。...不知道你怎么看,反正我觉得很奇怪,为什么要采用这么麻烦的方式表示负数,更直觉的方式难道不好吗? 昨天,我在一本书里又看到了这个问题,然后就花了一点时间到网上找资料,现在总算彻底搞明白了。...也就是说,在这种情况下,正常的加法规则不适用于正数负数的加法,因此必须制定两套运算规则,一套用于正数正数,还有一套用于正数负数。从电路上说,就是必须为加法运算做两种电路。...2的补码的本质 在回答2的补码为什么能正确实现加法运算之前,我们先看看它的本质,也就是那两个步骤的转换方法是怎么来的。 要将正数转成对应的负数,其实只要用0减去这个数就可以了。...第一种情况,如果X小于Y,那么Z是一个负数。这时,我们就对Z采用2的补码的逆运算,求出它对应的正数绝对值,再在前面加上负号就行了。

78030

理解二进制补码的本质,别再死记硬背了

负数在计算机中如何表示? 举例来说,+8在计算机中表示为二进制的1000,那么-8怎么表示呢? 很容易想到,可以将一个二进制位(bit)专门规定为符号位,它等于0时就表示正数,等于1时就表示负数。...不知道你怎么看,反正我觉得很奇怪,为什么要采用这么麻烦的方式表示负数,更直觉的方式难道不好吗? 昨天,我在一本书里又看到了这个问题,然后就花了一点时间到网上找资料,现在总算彻底搞明白了。...也就是说,在这种情况下,正常的加法规则不适用于正数负数的加法,因此必须制定两套运算规则,一套用于正数正数,还有一套用于正数负数。从电路上说,就是必须为加法运算做两种电路。...2的补码的本质 在回答2的补码为什么能正确实现加法运算之前,我们先看看它的本质,也就是那两个步骤的转换方法是怎么来的。 要将正数转成对应的负数,其实只要用0减去这个数就可以了。...第一种情况:如果X小于Y,那么Z是一个负数。这时,我们就对Z采用2的补码的逆运算,求出它对应的正数绝对值,再在前面加上负号就行了。

1.3K40
领券