JS带我探究计算机原理 - int型的内存表示

学习 C++ 变量类型的时候,突然想深入的探究各类型的内存结构
于是,便把目光投向了JS
那是因为... ArrayBuffer TypeArray 这些api简直是为我此次学习而量身定制的!
ECMA 啊,你们太贴心啦....


目标是 int 整型
传说中他是32位补码表示
用他小试牛刀,看看 -1 长啥样

//c++ int占4byte,所以先开辟一个4byte (32bit) 存储空间
let buff = new ArrayBuffer(4);
// 然后我想要输入有符号整型之后,能看到他的补码
//in_buff 用来接收输入,输入的是有符号的int
let in_buff = new Int32Array(buff);  
//out_buff 用来输出
let out_buff = new Uint32Array(buff); 
//然后后就是见证奇迹的时刻,看看-1补码长啥样
in_buff[0] = -1;
console.log('十六进制输出', out_buff[0].toString(16).padStart(8,0));
console.log('二进制输出',out_buff[0].toString(2).padStart(32,0) );
console.log('内存结构', new Uint8Array(buff) );

浏览器F12,控制台上一波走
ps: js好用,村里随便找台电脑,打开浏览器,就有运行环境,就有CLI,嘿嘿,爱了

哇!-1的补码16进制那么多f, 2进制那么多1,一看就很补,一看就是对的。

-2,-3,100 .... 照样复制,回车,一波走起
也都没问题

结论:
int型用补码表示
补码首bit为符号位,正0 负1
剩下为数值位
正数: 直接对应其二进制数;
负数: 为其值按位取反再+1, 说白了就是那个加他刚好能进到第33位的数(他的另一半,有了她,数才能完整,才能升华)




原文链接:segmentfault.com

上一篇:行内元素 在设置绝对定位后的 margin 效果
下一篇:基于React、Redux、和 React-Router的项目模板。

相关推荐

  • 🙋Hanjst汉吉斯特改进+enSafeExpression安全表达式等

    Hanjst汉吉斯特模版语言及模版引擎,近期持续改进升级。 这次改进主要是增加了对安全输出表达式兼容,由于涉及到对软件开发过程中的效率和软件运行效率的平衡和取舍,所以多写了几句,以描述这个权衡利弊对...

    4 个月前
  • 🙋Hanjst汉吉斯特升级:+showImageAsync及性能改进等

    自2019年元旦🙋Hanjst汉吉斯特 模板语言及其编译引擎发布,已经过去一年多了。 这期间随着 🙋Hanjst汉吉斯特 的推广应用,我们也陆续发布了如下一些更新内容: 🛠️Hanjst/汉吉...

    5 个月前
  • 🙋Hanjst汉吉斯特优化+JsonDataFromScript等

    近日继续对 🙋Hanjst汉吉斯特优化改进。这次的改进思考是从服务器端返回的 HanjstJsonData的容器设计问题。目前的做法是服务器端的HanjstJsonData放入终端页面的一个Div元...

    4 个月前
  • 😉我用 Nuxt.js 仿了个掘金

    前言 首先肯定是要夸夸掘金啦,最开始从 CSDN 到 博客园 再到 掘金,个人感觉掘金的技术氛围非常的nice,真是个宝藏社区👏。技术文章大多以前端为主,对前端开发者非常友好,质量也是歪瑞古的。

    5 个月前
  • 😀一个原生js弹幕库

    danmujs 😀一个原生js弹幕库,基于 CSS3 Animation 地址、核心代码 本项目基于 rc-bullets,项目约70%的代码基于rc-bullets,首先要感谢这个项目的作者...

    8 个月前
  • 🕵️‍♀️由原型到JS中的“模拟类”

    讲述了有关 JavaScript 中原型相关知识,又引出了 JavaScript 中的**“类“**究竟是什么?,以及一系列相关问题。 一、前置知识 1、JavaScript 的面向对象(OOP) ​...

    6 个月前
  • 🔥《吊打面试官》系列 Node.js 必知必会必问!

    前言 codeing 应当是一生的事业,而不仅仅是 30 岁的青春🍚 本文已收录 Github,欢迎 Star,一起接水💧 作为一个在互联网公司面一次拿一次 Offer 的面霸,打败了无...

    6 个月前
  • 💖CSS + JS 送学妹满屏幕小爱心

    故事开始 午饭时间,暗恋已久的学妹拉着我的衣袖:“学长学长,你能不能让这些爱心变成五颜六色的吗~”。 我在旁边笑开了花~~~ 诶呀,口水流出来了。

    5 个月前
  • 🆘 一次理解清楚,为什么使用 React useEffect 中使用 setInterval 获取的值不是最新的

    Intro 这篇文章将通过一个使用 React Hook 常遇到的问题(stale state)入手,尝试理解 Hook 的内部运行逻辑。 废话不多说,直接看示例Sandbox。

    3 个月前
  • (干货👍)从详细操作js数组到浅析v8中array.js

    前言 最近在写面试编程题,经常用到数组,经常想偷个懒,用它提供的方法,奈何还是对数组方法使用不熟练,导致写了很多的垃圾代码,很多地方稍加修改的话肯定变得简洁高效优雅👊 所以✍这篇文章本着了解一下Ja...

    3 个月前

官方社区

扫码加入 JavaScript 社区