烟雨星空 发布的文章

负数为什么要用补码来表示?

上篇文章讲了负数在计算机中是怎么存储的。看完之后,应该对原码,反码,补码有了基本的了解了。今天,我们深入探讨一下,为什么计算机中要用补码来表示负数?首先,我们应该清楚,原码是方便给人看的。看到一个数的原码,我们就能根据符号位和后边的二进制位,计算出这个数的实际值。为了简单起见,我以一个字节8位来举例,如// 1 的原码 ,最高位0代表正数 0000 0001 // -1 的原码, 最高位1代... 阅读全文->

负数在计算机中是怎么存储

今天,发生一件非常有趣的事情。公司同事问了我一个问题:为什么 2.0 - 1.1 = 0.89999999 呢?不应该是 0.9吗?原来是,他问了周围一圈的同事,都给他的是同一个回答,说这是精度问题。他百思不得其解,怎么就会产生精度问题呢。再问,就没人知道原因了。然后,我就看到了他抱着一本厚厚的书在看。拿过来一看,是一本Java书,厚厚的六百多页,这还仅是第一卷。哟呵,这是准备大干一场啊。看... 阅读全文->

为什么0.1+0.2=0.30000000000000004

​阅读本文大约需要8分钟...问题在计算机的世界里,可能有很多常人无法理解的事情。比如 0.1 + 0.2 = ?。来,告诉我你的答案。有的朋友看到这就迫不及待的说,这么简单的问题,很明显等于 0.3 啊,小学生都会算的好伐。你这是在侮辱我的智商?好吧,我来告诉你一个打脸的事实,0.1 + 0.2 还真不等于 0.3 。先别急着反驳我。打开你的任意一个浏览器(我用chrome做演示),... 阅读全文->

怎么理解js的原型链继承?

前言了解java等面向对象语言的童鞋应该知道。面向对象的三大特性就是:封装,继承,多态。今天,我们就来聊一聊继承。但是,注意,我们现在说的是js的继承。在js的es6语法出来之前,我们想实现js的继承关系,需要借助于原型链。之前的文章,我有讲过原型和原型链的概念。在这,再重新回顾一下。js中万物皆对象,每个对象都有一个隐式原型 __proto__ ,指向创建它的构造函数的原型对象。函数(构造... 阅读全文->

js中call、apply和bind到底有什么区别?

介绍在js中,每个函数的原型都指向Function.prototype对象(js基于原型链的继承)。因此,每个函数都会有apply,call,和bind方法,这些方法继承于Function。它们的作用是一样的,都是用来改变函数中this的指向。使用方法apply的用法可以表示如下:A.apply(B, [x, y, z]);此方法可以改变函数A的this指向,使之指向函数B。第二个参数传的是... 阅读全文->