JavaScript字长,js字典长度

[JS] 有符号整数的位操作

按位操作符(Bitwise operators)会使用内置函数, 7.1.5 ToInt32 ( argument ) ,

崇阳网站建设公司创新互联,崇阳网站设计制作,有大型网站制作公司丰富经验。已为崇阳千余家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的崇阳做网站的公司定做!

先将其操作数转换成32位有符号整数 ,再进行位操作,最后返回一个32位有符号整数。

包括,

12.5.8 Bitwise NOT Operator ( ~ ) ,

12.9.3 The Left Shift Operator ( ) ,

12.9.4 The Signed Right Shift Operator ( ) ,

12.12 Binary Bitwise Operators

因此, a | 0 , 0 | a ,都可以将变量 a 中数值转换为32位有符号整数。

某些特殊的值,并不是32位有符号整数的安全范围,它们会被转换为 0 。

在计算机中表示有符号整数,通常使用 补码 (two's-complement)进行编码。

它将字的最高有效位解释为符号位,符号位被置为 1 时,表示值为负,

符号位被置为 0 时,表示值为非负。

因此,字长为4的二进制数 0001 表示整数 1 ,其中 0*2^3+0*2^2+0*2^1+1*2^0=1 ,

而 1111 就表示整数 -1 ,其中 -1*2^3+1*2^2+1*2^1+1*2^0=-1 。

负数的补码,还可以按照“ 逐位取反后,加一 ”的方式来获取相应的整数值。

例如, 1111 逐位取反 0000 ,然后再加一 0001 ,它是 1 的二进制表示,

因此 1111 就是表示 -1 了。

~ 操作符,它首先将操作数转换成32位有符号整数,然后再按位取反。

例如, 1 的32位补码编码为,

按位取反,

它表示什么呢?

先看最高为的符号位,是 1 ,它表示一个负数,

然后“逐位取反后,加一”, 00000000 00000000 00000000 00000002 值为 2 ,

因此, 11111111 11111111 11111111 11111110 表示 -2 。

一般的, 可以证明 ,

对于任意的32位有符号整数 x 来说, ~x === -(x+1) 。

详细证明见文后的附录。

ECMAScript中,数组元素的索引范围是, 0 到 Math.pow(2,32)-2 。

规范 9.4.2 Array Exotic Objects 中指出,

超过数组 length 的索引,会被看做数组的属性值,

因此, indexOf 返回的最大值为 Math.pow(2,32)-2 。

Array.prototype.indexOf ,

会返回给定数组元素在数组中的索引,如果找不到给定元素,就返回 -1 。

因为只有 ~-1 等于 0 ,其他索引值取反都非 0 ,

所以,人们经常使用 !~a.indexOf(element) 来判断元素是否在数组中。

这里有一个值得注意的事情,由于 ~ 会首先将操作数转换成32位有符号整数,

所以, -1 和 Math.pow(2,32)-1 具有相同的编码,

但是,数组的最大索引为 Math.pow(2,32)-2 ,小于上面这个值,

因此,对 indexOf 返回的值进行取反,除了 -1 之外,总是非 0 值,是安全的做法。

下面给出 ~x === -(x+1) 的证明。

(1)先看正整数

对于32位正整数来说,它的二进制编码为,

其中 n 表示 0 或者 1 ,

则, ~x 为,

其中 u 为 n 的取反结果。

以上二进制表示,如果看成32位有符号整数,则由于符号位 1 ,它是一个负数,

其绝对值为,“逐位取反后,加一”,即为, (0nnnnnnn nnnnnnnn nnnnnnnn nnnnnnnn)+1 === x+1 ,

即, -(x+1) 。

因此,对于正数, ~x === -(x+1) 。

(2)再看负整数

对于32位负整数来说,它的二进制编码为,

其中 n 表示 0 或者 1 ,

则, ~x 为,

其中 u 为 n 的取反结果。

设 0uuuuuuu uuuuuuuu uuuuuuuu uuuuuuuu 的值为 t ,

则 1nnnnnnn nnnnnnnn nnnnnnnn nnnnnnnn 的值为, -(t+1) ,(逐位取反后,加一)。

因此, x === -(t+1) , ~x === t ,

即, ~x === t === -(-(t+1) + 1) === -(x+1) 。

证毕。

你不知道的JavaScript(中卷)

ECMAScript Language Specification

深入理解计算机系统

电脑基础知识问答卷

,Q:计算机是哪一年发明的?

A:计算机是 1946 年在美国发明的。而电脑(微机)的出现是 20 世纪 70 年代。

1,Q:快速改变 Windows 窗口状态:

A:双击窗口上方的标题栏(通常为蓝色),可以使窗口在最大化和常规大小间切换。

2,Q:一次打开编辑众多 Windows 系统文件:

A:在“开始/运行”中输入“sysedit”,确定,可以一次打开五个系统文件进行编辑:autoexec.bat,config.sys,win.ini,system.ini,protocol.ini。

3,Q:除过操作系统,电脑初学者应安装和熟悉什么应用软件?

A:建议安装和熟悉以下应用软件:

(1)编辑软件:如 WPS2000、Word97/2000,笔记本(Notepad)、EDIT 等;

(2)词典软件:金山词霸等;

(3)多内码翻译软件:两岸通(Lat)、利方汉字系统(RichWin)、南极星汉字系统等;

(4)杀毒工具:Kv300、瑞星、Kill 等;

(5)解压缩软件:Winzip、Arj 等;

(6)看图工具:ACDSee 等;

(7)电子小说阅读器:Readbook、e-BOOK等;

(8)软解压软件:超级解霸等;

(9)电子邮件软件:Foxmail、Outlook等;

(10)软件下载软件:网络蚂蚁(Netants)等;

(11)软件上传软件:CuteFTP 等等。

(12)网上聊天软件:OICQ 等;

4,Q:Windows 中关于“复制、粘贴”的一组快捷键:

A:

全选:Ctrl+A

拷贝:Ctrl+C

剪切:Ctrl+X

粘贴:Ctrl+V

撤消:Ctrl+Z

5,Q:Windows 系列都有那些版本?

A:曾经流行的和常见的有:

Windows3.0,Windows3.1,Windows3.2,Windows3.11 for workgroups;

Windows95,Windows97,Windows98,Windows98se,WindowsMe;

WindowsNT3.51(Server,Workstation),WindowsNT4.0(Server,Workstation),

Windows2000(Server,Advanced Server,Datacenter Server,Professional)

6,Q:“电脑”、“微机”和“计算机”有什么区别?

A:许多刚刚接触计算机的人往往搞不清这些概念的差别。“计算机”的概念最大,包括大型机、中型机、小型机以微型计算机等。而“微机”是“微型计算机”的简称。“电脑”是人们对微型计算机的一种比喻的叫法。所以,从概念上讲,“电脑”和“微机”应当是等价的。我们最常见的就是这些被人们称作“电脑”的微型计算机。一些中型机、小型机(如 IBM AS400,IBM RS/6000)一般只能在研究机构或大的网站、商业机构处见到。

实际生活中有一个有趣的现象,就是:往往理工科的学生更多的将微型计算机称作“微机”或“计算机”,而文科学生和家庭用户则更多的将微型计算机称作“电脑”。

7,Q:内存和硬盘有什么区别?

A:这个简单的问题经常被初学计算机的人混淆。经常听他们说“我的机子内存可大了,是 20G。”他们这里所说的“内存”其实是硬盘。他们的理解是:(硬盘)装在机子内部,又能保存数据,不是内存是什么?

其实,计算机的内、外之分,不是以机壳来界定的。从计算机的体系结构来讲,硬盘应当是计算机的“外存”。内存应当是计算机内部(在主板上)的一些存储器,用来保存CPU运算的中间数据和计算结果。这些数据有时被保存在硬盘上。目前计算机所配的内存一般是16M、32M、64M、128M、256M 等。硬盘的大小有4.3G、6.4G、8G、10G、20G、30G 等。

8,Q:为什么计算机的内存越大,其速度越高?

A:这是因为:在CPU的运算过程中,会产生大量的中间数据,这些数据要放在内存中进行“周转”。如果内存太小,这些中间数据的一部分会被暂时保存在硬盘上(称作“虚拟内存”),使用时再从硬盘上调回内存中。而硬盘的存贮速度比内存小得多。所以增加计算机的内存容量,使计算机的“数据周转”尽可能在内存中进行,一般会显著增加计算机的速度。从理论上讲,计算机的内存越大,其整体速度越高。

9,Q:什么是 IRC?

A:IRC(Internet Relay Chat) 是网络实时聊天系统,比目前基于 WWW 的聊天系统要稳定一些。

10,Q:什么是 PDA?

A:现在掌上电脑是一个热门话题。有人把低阶的产品归之为 PDA(Personal Digital Assistant 个人数字助手),把高阶的产品归之为掌上电脑。但实际上在国外已经很普遍地把所有的移动计算产品统称为 PDA 了。

11,Q:为什么光驱读盘时发出“嘟……呜……”的怪叫声,如何解决?

A:现在的光驱,转速已经很高了,怪叫声是光驱读盘时其机械机构与机箱发生共振而产生的。可以打开机箱,重新紧一紧光驱的固定螺丝,基本可以消除这种现象,至少可以大大减轻怪叫声。

12,Q:Windows97 是什么?

A:Windows97 是 Windows95 OSR2 的俗称(OSR=OEM Service release),它是 Windows95 4.00.950b 版,是 Microsoft 于 1996 年 8 月对 Windows95 的第二次升级,第一次是 1996 年 2 月 13 日,Microsoft 发布了一组免费升级程序 Service Pack1,当时的 Windiws95 版本号升成了 4.00950a。Windows97 修正了 Windows95 的一些错误,还增加了一些新功能,如支持 USB 接口和 FAT32 文件系统,捆绑了IE3.01,内含 PWS(Personal Web Server) 和 Java 支持等。

13,Q:什么是“防火墙”?

A:防火墙是一个位于内部网络与 Internet 之间的网络安全系统,是按照一定的安全策略建立起来的硬件和(或)软件的有机组成体,以防止黑客的攻击,保护内部网络的安全运行。防火墙可以被安全在一个单独的路由器中,用来过滤不想要的信息包,也可以被安装在路由器和主机中,发挥更大的网络安全保护作用。防火墙被广泛用来让用户在一个安全屏障后接入互联网,还被用来把一家企业的公共网络服务器和企业内部网络隔开。另外,防火墙还可以被用来保护企业内部网络某一个部分的安全。例如,一个研究或者会计子网可能很容易受到来自企业内部网络里面的窥探。

14,Q:什么是主板的“整合技术”?

A:主板的“整合技术”是将原来单独配置的板卡(如 AGP 显卡、PCI 声卡、PCI Modem、PCI 网卡等)及IEEE-1394 等设备接口集成在主板上,以提高产品的兼容性和性价比。目前比较流行的做法是在主板上集成一块 AMR(Audio Modem Riser)专用插槽或 CNR(Communication and Networking Riser通讯网络提升器)接口以及集成 IDE 控制器来支持更高的硬盘标准等。还有些主板集成 ATA/100 控制器来使主板支持 ATA/100,并且有的还带有 RAID 功能。

15,Q:怎样快速在新的窗口中打开网页链接?

A:按住 Shift 键,左键单击链接。

16,Q:“WWW”(world wide web)是什么?

A:“WWW”是 Internet 上提供的一项服务,主要以 Web 服务器发布网页的形式对外提供,用户端用浏览器(如 IE、Navigator 等)进行 WWW 信息浏览。

17,Q:什么是网络的“拓扑结构”?

A:网络的“拓扑结构”是指网络的几何连接形状,画成图就叫网络“拓扑图”。目前应用最多的网络拓扑结构是星形结构,此外还有总线形和环形等网络结构。

现在流行的网络布线拓扑结构是总线型和星型。

总线形网络: 是将所有电脑连接在一条线上,使用同轴电缆连接,就像一条线上栓着的几只蚂蚱,只适合使用在电脑不多的局域网上,因为电缆中的一段出了问题,其他电脑也无法接通,会导致整个网络瘫痪。系统中要使用 BNC 接口网卡、BNC-T 型接头、终结器和同轴细缆。

星形网络: 使用双绞线连接,结构上以集线器(HUB)为中心,呈放射状态连接各台电脑。由于 HUB 上有许多指示灯,遇到故障时很容易发现出故障的电脑,而且一台电脑或线路出现问题不影响其他电脑,这样网络系统的可靠性大大增强。另外,如果要增加一台电脑,只需连接到 HUB 上就可以,很方便扩充网络,所以星形结构的网络现在非常流行。

18,Q:什么是路由器?

A:路由器是 TCP/IP 网络上的一种网络互连设备。用于在不同的网段间扮演网关的角色,提供数据包的转发和传输路径的选择。

19,Q:什么是代理服务器?

A:代理服务器是在内部网和 Internet 之间的一台主机设备,当内部网的用户需要 Internet 上的某一服务时,代理服务器会将数据取回来再通知用户。内部网的所有用户只要一个代理服务器,就都可以同时上网,而代理服务器只占用 Internet 上的一个 IP 地址。代理服务器还同时兼有防火墙和数据缓冲的功能。

20,Q:什么是对等网? 与其他网络形式相比,它的优点在哪里? 它在什么时候最适用呢?

A:如果您使用过直接电缆连接,您一定会有所感受:它只是一种通讯手段。每次只能让一方访问另外一方,具体地说就是只能客户机访问主机。要使主机能访问客户机,必须重新设置直接电缆连接,使主/客位置换过来才能达到目的。显然,这只是一种临时使用的通讯手段,并非长远之策;对等网相对直接电缆连接就高级了一些,它不但方便连接两台以上的电脑,而且更关键的是它们之间的关系是对等的,连接后双方可以互相访问,没有主客阶级差异;然而,对等网仍然不能共享可执行程序,只有上升到客户/服务器结构的局域网,才能共享服务器上的可执行程序。当然,那样的网络需要牺牲一台高性能的电脑作为网络中的服务器让大家共享,这台电脑不能让任何人用作个人应用目的,而且需要一个专人(网络系统管理员)来维护它,成本(人力、资金)就会大大增加。因此,对等网是一种投资少、见效快、高性价比的实用型小型网络系统。如果没有特殊需要,建立对等网足矣。

对等网适合家庭或比较小型的办公网络,连接的电脑数最好不超过10台。如果连接到对等网的电脑超过10台,这个网络系统的性能会有所降低,请改用客户/服务器结构的Win NT网络或Novell网络。

21,Q:怎样连接 Windows 对等网?

A:

(1)正确安装 Windows(包括 Windows3.11,Windows9x,WindowsNT,Windows2000);

(2)正确安装网卡驱动程序;

(3)安装 NetBEUI 协议;

(4)设置“计算机名”和“组名”(对等网里的计算机不能重名,可以对计算机进行分组);

(5)测试。在“网络邻居”里应该可以看到所有的分组和分组里的计算机。如果暂时看不道,请稍等一会,按 F5 刷新。如果你太性急,请运行“开始/查找/计算机...”,就会立即找到“网络邻居”里机器。

22,Q:什么是 POP3?

A:POP 即为 Post Office Protocol 的简称,是一种电子邮局传输协议,而 POP3 是它的第三个版本,是规定了怎样将个人计算机连接到 Internet 的邮件服务器和下载电子邮件的电子协议。它是 Internet 电子邮件的第一个离线协议标准。简单点说,POP3 就是一个简单而实用的邮件信息传输协议。

23,Q:什么是 SMTP?

A: SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。

24,Q:“WYSIWYG”是什么意思?

A:“WYSIWYG”是“所见即所得”的意思。WYSIWYG=What You See Is What You Get。

另外,还有一些缩略词:

PnP Plus and Play 即插即用

BIOS Basic Input and Output System 基本输入输出系统

IE Internet Explorer 微软的 Internet 浏览器“探险家”

更多的缩略词…

25,Q:怎样使用 Windows9x 的查找功能?

A:Windows9x 的查找功能主要可以进行“文件夹或文件查找”和“计算机查找”等。“文件夹或文件查找”可以在本机上查找到限制条件下的文件夹和文件,而“计算机查找”可以在“网络邻居”里查找到要找的计算机。有时直接在网络邻居里看不到的机器,可以在这里查找得到。Windows9x 的查找功能可以从“开始/查找/…”下得到。

26,Q:怎样使用 PDOS95?

A:PDOS95 是 Windows9x 自带的一种汉字系统,在 Windows9x 的 MS-DOS 方式下使用。使用方法是,进入MS-DOS 方式,在命令行状态下键入 PDOS95,回车。这时,屏幕右下方会显示一行黄色文字:“Windows95中文DOS方式”,表明已经进入 PDOS95 汉字状态。要输入汉字,按“Ctrl+空格”即可。其它功能键是:“Shift+空格”可切换“全角/半角”,“Ctrl+Shift”可选择输入法。在命令行状态下执行 Quit 可以退出 PDOS95 方式,执行 Exit 可以退出 MS-DOS 方式并返回 Windows 图形用户界面。

27,Q:怎样制作 Windows98 启动引导软盘?

A:Windows98 的启动引导盘支持几乎所有的光驱,可以进行 FAT16/FAT32 的硬盘分区,是计算机高手手头必备的一张工具盘,如果丢失或损坏,可以这样制作:找一台安装 Win98 的机器,在软驱中插入一张软盘,然后执行“控制面板/添加-删除程序/启动盘/创建启动盘”,即可制作一张启动盘。

28,Q:E-mail 中“@”的来历?

A:确立了“@”在 E-MAIL 地址中一席之地的是美国电脑工程师雷.汤林森。他当时就职于美国国防部发展军用网络 ARPANET(Internet的前身)的某电脑公司,1971 年他受命寻找一种电脑地址的格式,能让用户方便地发送电子邮件。由于“@”不会与人名产生重复,因此被选中。在 E-MAIL 地址格式中,“@”将人名与电脑地址分开,让文件在网络中传输不会产生误读。“@”的发音和“at”有些类似,用在 E-MAIL 地址格式中正好表示“在…”的意思。

29,Q:什么是 Java ?

A:Java 是 SUN 公司推出的新一代面向对象的网络程序设计语言, 它的设计思想是最大限度的利用网络,特别适合于 Internet 应用程序的开发,其前身是 Oak 语言。Java 语言嵌入浏览中的形式为: 〈applet〉…〈/applet〉。

30,Q:什么是 javascript ?

A:javascript 是 Netscape 公司的产品,是为了扩展 Navigator 浏览器的功能而开发,它是集成在 Navigator 浏览器当中的、可嵌入 Web 页面中的、基于对象和时间驱动的解释性语言。其前身是 Live Script。 javascript 脚本嵌入浏览中的形式为:〈Script Language="javascript"〉…〈/Script〉。

31,Q:忘记 Windows 的 CDKEY 怎么办?

A:忘记 Windows 的 CDKEY 时,可以在系统的注册表里去查,办法是:运行 Regedit 程序,在 Windows95注册表搜索字符串 ProductID,在 Windows98 注册表搜索字符串 ProductKey,找到的键值即为本 Windows 的CDKEY 号。

32,Q:如果想组建一个对等网,需要购买哪些设备?

A:以组建星形网为例。如果两台电脑连接,就需要两块网卡、一根双绞线和两个 RJ-45头(水晶头)即可。如果使用两台以上的电脑连接对等网,因为每个网卡只有一个 RJ-45 接口,因此只能使用集线器(HUB)连接,即每台电脑安装一个网卡,连接一条双绞线到 HUB。这使增加一台电脑连到网络变得很容易,而且 HUB 上有足够的指示灯,使得判断故障、传输碰撞等状态非常简单。一块 10M 的 ISA 网卡才 100 元左右(如 D-link 220p),双绞线每米 2.5 元左右(假货更便宜),一个水晶头也不过近 1 元钱,一个 8 口的 HUB (能连接8台电脑) 300 元。你可以计算一下,对等网是否价廉物美?

33,Q:星形对等网的组建步骤:

A:

(1)、网卡的安装:首先像安装其他任何硬件卡一样,将网卡插入 PC 机的一个 插槽中,固定好;

(2)、双绞线的制作:剪裁适当长度的双绞线,用剥线钳剥去其端头 1 厘米左右的外皮(注意内芯的绝缘层不要剥除),一般内芯的外皮上有颜色的配对,按颜色排列好,将线头插入 RJ-45 接头,用钳子压紧,确定没有松动,这样一个接头就完成了;

(3)、HUB 的安装与连接:把接好接头的双绞线的一端插入计算机的网卡上,另外一端插入 HUB 的接口中,接口的次序不限,然后将 HUB 所带的小整流器的电源输出端插入 HUB 的电源接口,接上电源。最后的结果是每一台计算机都用一根双绞线与 HUB 连接,这种网络的布线方式被称为“星形拓扑”。

34,Q:对等网需要什么样的协议?

A:通常,网络通讯协议安装的越多,在与其他网络连接时就越方便。但协议安装多了系统速度就会下降。因此,最好只安装必要的协议。理论上,对等网只安装 NetBEUI 网络通讯协议即可相互共享资源,但如果要使用局域网中 Novell 服务器的资源,您就要安装支持 Novell 的 MS-IPX/SPX 兼容协议。要上互联网就要安装 TCP/IP 协议。注意,TCP/IP 协议可能在安装 Windows9x 时就已经作为默认的设置在您的电脑中安装了。

35,Q:Windows 中如何安装 NetBEUI 等网络通讯协议?

A:依次打开“我的电脑/控制面板/网络”,看“配置”卡片中是否有“NetBEUI-XXX”字样的记录。XXX是具体的网卡型号,比如“3Com EtherLink II or II TP(8 or 6-bit)3C503”。如果没有,可以这样安装:在“配置” 卡片中单击[添加]按钮,在弹出的“请选择网络组件类型”窗口中选择“协议”,单击[添加]按钮,在“选择网络协议”窗口中的左面选择“Microsoft ”,右面选择“NetBEUI”,单击[确定]。当然,安装过程中可能要使用 Windows 的系统安装光盘。最后要重新启动机器。对于 TCP/IP 等协议,可“如法炮制”。

36,Q:怎样给机器安装网卡?

A:在“网络时代”给机器安装网卡是成为电脑高手必需的基本技能。像许多其它硬件一样,安装网卡分为硬件安装和软件安装两部分。

(1)了解网卡:是 IDE 接口还是 PCI 接口? 网卡是否支持 PnP? 是 10M 还是 10M/100M 自适应网卡? 带几种网线接口(BNC,RJ45)? 网卡的品牌? 网卡的说明书和驱动程序盘是否完好?

(2)将网卡安装到微机主板的合适的(IDE、PCI)插槽中;

(3)运行网卡驱动程序盘上的网卡诊断程序测试网卡;记住网卡的 IO 端口号和 INT 中断号;

(4)如果网卡支持 PnP(即插即用),那么 Windows 一般会检测到该设备,并要求安装网卡的驱动程序。如果Windows 不支持该网卡,则必须安装驱动盘上的驱动程序。将驱动盘插入软驱,指向对应的目录,驱动程序会被 Windows 找到,并拷入Windwos 的目录下;

如果网卡不支持 PnP,或 PnP 特性被我们设置为“关闭”(Disable),那么我们可以手动添加该设备,并设置其 IO 端口号和 INT 中断号;

(5)如果网卡安装正确,则我们在“网络邻居”里应该能看见自己的机器(这个过程有时较长,可以多按几下 F5 键,或在“开始/查找/计算机”里查找这台机器)。

(6)如果是在 DOS 下安装网卡,则记住其 IO 端口号和 INT 中断号对正确安装网卡更有用。

37,Q:Windows 网络设置中,“文件及打印共享”是虚的,无法选择,怎么办?

A:您可以在“网络/配置”中查看一下,有没有“Microsoft 网络上的文件与打印共享”组件。若没有,您需要添加组件,单击[添加]按钮,在“请选择网络组件”窗口单击“服务”,单击 [添加] 按钮,在“选择网络服务”的左边窗口选择“Microsoft”,在右边窗口选择“Microsoft 网络上的文件与打印机共享”,单击 [确定]按钮,之后返回到网络窗口,并要求插入 Windows 安装光盘。重新启动机器后,方可选择“文件及打印共享”。

38,Q:怎样设置计算机的“标识”?

A:在“网络/标识”中可以设置您的计算机在网络上的标识。其中,“计算机名”、“计算机说明”将在连接成功后的“网络邻居”中显示出来。因此,写个比较明确的名字比较好,比如计算机名叫“张庆”,“计算机说明”写为“张庆的计算机”,含义就很清楚。否则在“网络邻居”中看到一些莫名其妙的英文名字根本不知道谁是谁。

注意:如果输入了别人已经使用过的计算机名,进入 Win98 时,系统可能提示警告信息。也无法正确使用“网络邻居”的资源。因为 NetBEUI 协议就是按照“计算机名”来识别网络中的各个计算机的,不能重复。

39,Q:双绞线 568B 标准的接线方法:

A:橙白-橙-绿白-绿-蓝白-蓝-棕白-棕,然后4-6交换,即绿-蓝交换。(简单记为:橙绿蓝棕,4-6交换)。

40,Q:电脑中硬盘和 C: 盘、D: 盘、E: 盘等有什么区别?

A:硬盘是指物理上的数据存贮介质,即我们从电子市场商家手中购买的那个有巴掌大小、约 2 公分厚的黑颜色的家伙。而 C:盘、D:盘、E:盘等,是为了数据管理的需要,用分区软件将物理硬盘划分的逻辑上的区块,用C:、D:、E: 等进行区分。一个硬盘划分几个分区、每个分区多大容量与操作系统等有一定的关系。过去硬盘容量都很小(≤800M),经常把硬盘分成一个分区 C:,这样存取 C: 盘即是存取硬盘,所以有许多人认为 C: 盘就是硬盘,这是不对的。

电脑是谁发明的?

第一台计算机(ENIAC)于1946年2月,在美国诞生。提出程序存储的是美国的数学家 冯^诺依曼, 在美国陆军部的资助下,与1943年开始了ENIAC的研制,1946年完成; 一、机械计算机的诞生 1614 年:苏格兰人John Napier(1550 ~1617 年)发表了一篇论文 ,其中提到他发明了一种可以进行四则运算和方根运算的精巧装置。 1623 年:Wilhelm Schickard(1592 ~1635 年)制作了一个能进行6 位数以内加减法运算,并能通过铃声输出答案的“计算钟”。该装置通过转动齿轮来进行操作。 1625 年:William Oughtred(1575 ~1660 年)发明计算尺。 1668 年:英国人Samuel Morl(1625 ~1695 年)制作了一个非十进制的加法装置,适宜计算钱币。 1671 年:德国数学家Gottfried Leibniz 设计了一架可以进行乘法运算,最终答案长度可达16位的计算工具。 1822 年:英国人Charles Babbage(1792 ~1871 年)设计了差分机和分析机 ,其设计理论非常超前,类似于百年后的电子计算机,特别是利用卡片输入程序和数据的设计被后人所采用。 1834 年:Babbage 设想制造一台通用分析机,在只读存储器(穿孔卡片)中存储程序和数据 。Babbage在以后的时间里继续他的研究工作,并于1840 年将操作位数提高到了40 位,并基本实现了控制中心(CPU)和存储程序的设想,而且程序可以根据条件进行跳转,能在几秒内做出一般的加法,几分钟内做出乘、除法。 1848 年:英国数学家George Boole 创立二进制代数学,提前近一个世纪为现代二进制计算机的发展铺平了道路。 1890 年:美国人口普查部门希望能得到一台机器帮助提高普查效率。Herman Hollerith (后来他的公司发展成了IBM 公司)借鉴Babbage 的发明,用穿孔卡片存储数据,并设计了机器。结果仅用6 周就得出了准确的人口统计数据(如果用人工方法,大概要花10 年时间)。 1896 年:Herman Hollerith 创办了IBM 公司的前身。 二、电子计算机问世 1906 年:美国人Lee De Forest 发明电子管,为电子计算机的发展奠定了基础。 1924 年2 月:IBM 公司成立,从此一个具有划时代意义的公司诞生。 1935 年:IBM 推出IBM 601 机。这是一台能在一秒钟内算出乘法的穿孔卡片计算机 。这台机器无论在自然科学还是在商业应用上都具有重要的地位,大约制造了1500 台。 1937 年:英国剑桥大学的Alan M.Turing(1912 ~1954 年)出版了他的论文 ,并提出了被后人称之为“图灵机”的数学模型。 1937 年:Bell 试验室的George Stibitz 展示了用继电器表示二进制的装置。尽管仅仅是个展示品,但却是第一台二进制电子计算机。 1940 年1 月:Bell 实验室的Samuel Williams 和Stibitz 制造成功了一个能进行复杂运算的计算机。该机器大量使用了继电器,并借鉴了一些电话技术,采用了先进的编码技术。 1941 年夏季:Atanasoff 和学生Berry 完成了能解线性代数方程的计算机,取名叫“ABC ”(Atanasoff-Berry Computer),用电容作存储器 ,用穿孔卡片作辅助存储器 ,那些孔实际上是“烧”上去的,时钟频率是60Hz,完成一次加法运算用时一秒。 1943 年1 月:Mark I 自动顺序控制计算机在美国研制成功。整个机器有51 英尺长 、5 吨重 、75万个零部件。该机使用了3304 个继电器 ,60 个开关作为机械只读存储器 。程序存储在纸带上 ,数据可以来自纸带或卡片阅读器。Mark I 被用来为美国海军计算弹道火力表。 1943 年9 月:Williams 和Stibitz 完成了“Relay Interpolator ”,后来命名为“ModelⅡ Re-lay Calculator ”的计算机。这是一台可编程计算机,同样使用纸带输入程序和数据。它运行更可靠,每个数用7 个继电器表示,可进行浮点运算。 1946 年:ENIAC(Electronic Numerical Integrator And Computer)诞生 ,这是第一台真正意义上的数字电子计算机。开始研制于1943 年,完成于1946 年,负责人是John W.Mauchly 和J.Presper Eckert,重30 吨,用了18000 个电子管,功率25 千瓦,主要用于计算弹道和氢弹的研制。 三、晶体管计算机的发展 1947 年:Bell 实验室的William B.Shockley 、 John Bardeen 和Walter H.Brattain 发明了晶体管,开辟了电子时代新纪元。 1949 年:剑桥大学的Wilkes 和他的小组制成了一台可以存储程序的计算机,输入输出设备仍是纸带。 1949 年:EDVAC(Electronic Discrete Variable Automatic Computer——电子离散变量自动计算机)——第一台使用磁带的计算机。这是一个突破,可以多次在磁带上存储程序。这台机器是John von Neumann 提议建造的。 1950 年:日本东京帝国大学的Yoshiro Nakamats 发明了软磁盘 ,其销售权由IBM公司获得 。由此开创了存储时代的新纪元。 1951 年:Grace Murray Hopper 完成了高级语言编译器。 1951 年:UNIVAC-1 ——第一台商用计算机系统诞生,设计者是J.Presper Eckert 和JohnMauchly 。被美国人口普查部门用于人口普查,标志着计算机进入了商业应用时代。 1953 年:磁芯存储器被开发出来。 1954 年:IBM 的John Backus 和他的研究小组开始开发FORTRAN(FORmula TRANslation) ,1957 年完成。这是一种适合科学研究使用的计算机高级语言。 1957 年:IBM 开发成功第一台点阵式打印机。 四、集成电路为现代计算机铺平道路 1958 年9 月12 日:在Robert Noyce(Intel 公司创始人)的领导下,集成电路诞生 ,不久又发明了微处理器。但因为在发明微处理器时借鉴了日本公司的技术,所以日本对其专利不承认,因为日本没有得到应有的利益。过了30 年,日本才承认,这样日本公司可以从中得到一部分利润。但到2001 年,这个专利就失效了。 1959 年:Grace Murray Hopper 开始开发COBOL(COmmon Business-Oriented Language)语言 ,完成于1961 年。 1960 年:ALGOL ——第一个结构化程序设计语言推出。 1961 年:IBM 的Kennth Iverson 推出APL 编程语言。 1963 年:DEC 公司推出第一台小型计算机——PDP-8 。 1964 年:IBM 发布PL/1 编程语言。 1964 年:发布IBM 360 首套系列兼容机。 1964 年:DEC 发布PDB-8 小型计算机。 1965 年:摩尔定律发表,处理器的晶体管数量每18 个月增加一倍,价格下降一半。 1965 年:Lofti Zadeh 创立模糊逻辑,用来处理近似值问题。 1965 年:Thomas E.Kurtz 和John Kemeny 完成BASIC(Beginner ’s All-purpose SymbolicIn-struction Code)语言的开发。特别适合计算机教育和初学者使用,得以广泛推广。 1965 年:Douglas Englebart 提出鼠标器的设想,但没有进一步研究,直到1983年才被苹果电脑公司大量采用。 1965 年:第一台超级计算机CD6600 开发成功。 1967 年:Niklaus Wirth 开始开发PASCAL 语言,1971 年完成。 1968 年:Robert Noyce 和他的几个朋友创办了Intel 公司。 1968 年:Seymour Paper 和他的研究小组在MIT 开发了LOGO 语言。 1969 年:ARPANet(Advanced Research Projects Agency Network)计划开始启动,这是现代Internet 的雏形。 1969 年4 月7 日:第一个网络协议标准RFC 推出。 1970 年:第一块RAM 芯片由Intel 推出,容量1KB 。 1970 年:Ken Thomson 和Dennis Ritchie 开始开发UNIX 操作系统。 1970 年:Forth 编程语言开发完成。 1970 年:Internet 的雏形ARPANet 基本完成,开始向非军用部门开放。 1971 年11 月15 日:Marcian E.Hoff 在Intel 公司开发成功第一块微处理器4004,含2300个晶体管,字长为4 位,时钟频率为108KHz,每秒执行6 万条指令。 1972 年:1972 年以后的计算机习惯上被称为第四代计算机。基于大规模集成电路及后来的超大规模集成电路。这一时期的计算机功能更强,体积更小。此时人们开始怀疑计算机能否继续缩小,特别是发热量问题能否解决。同时,人们开始探讨第五代计算机的开发。 1972 年:C 语言开发完成。其主要设计者是UNIX 系统的开发者之一Dennis Ritche。这是一个非常强大的语言,特别受人喜爱。 1972 年:Hewlett-Packard 发明了第一个手持计算器。 1972 年4 月1 日:Intel 推出8008 微处理器。 1972 年:ARPANet 开始走向世界,Internet 革命拉开序幕。 1973 年:街机游戏Pong 发布,得到广泛欢迎。发明者是Nolan Bushnell(Atari 的创立者)。 1974 年:第一个具有并行计算机体系结构的CLIP-4 推出。 五、当代计算机技术渐入辉煌 在此之前,应该说计算机技术还是主要集中于大型机和小型机领域的发展。随着超大规模集成电路和微处理器技术的进步,计算机进入寻常百姓家的技术障碍逐渐被突破。特别是在Intel公司发布了其面向个人用户的微处理器8080 之后,这一浪潮终于汹涌澎湃起来,同时也催生出了一大批信息时代的弄潮儿,如Stephen Jobs(史缔芬�6�1乔布斯)、Bill Gates(比尔�6�1盖茨)等 ,至今他们对整个计算机产业的发展还起着举足轻重的作用。在此时段,互联网技术和多媒体技术也得到了空前的应用与发展,计算机真正开始改变我们的生活。 1974 年4 月1 日:Intel 发布其8 位微处理器芯片8080 。 1975 年:Bill Gates 和Paul Allen 完成了第一个在MIT(麻省理工学院)的Altair 计算机上运行的BASIC 程序。 1975 年:Bill Gates 和Paul Allen 创办Microsoft 公司(现已成为全球最大、最成功的软件公司)。3 年后就收入50 万美元,员工增加到15 人。1992 年达28 亿美元,1 万名雇员。1981年Microsoft为IBM 的PC 机开发操作系统,从此奠定了在计算机软件领域的领导地位。 1976 年:Stephen Wozinak 和Stephen Jobs 创办苹果计算机公司,并推出其Apple Ⅰ计算机。 1978 年6 月8 日:Intel 发布其16 位微处理器8086 。1979 年6 月又推出准16 位的8088 来 满足市场对低价处理器的需要,并被IBM 的第一代PC 机所采用。该处理器的时钟频率为4.77MHz 、8MHz和10MHz,大约有300 条指令,集成了29000 个晶体管。 1979 年:低密软磁盘诞生。 1979 年:IBM 公司眼看个人计算机市场被苹果等电脑公司占有,决定开发自己的个人计算机 。为了尽快推出自己的产品,IBM 将大量工作交给第三方来完成(其中微软公司就承担了操作系统的开发工作 ,这同时也为微软后来的崛起奠定了基础),于1981 年8 月12 日推出了IBM- PC 。 1980 年:“只要有1 兆内存就足够DOS 尽情表演了”,微软公司开发DOS 初期时说 。今天来听这句话有何感想呢? 1981 年:Xerox 开始致力于图形用户界面、图标、菜单和定位设备(如鼠标)的研制 。结果研究成果为苹果所借鉴,而苹果电脑公司后来又指控微软剽窃了他们的设计,开发了Windows 系列软件。 1981 年8 月12 日:MS-DOS 1.0 和PC-DOS 1.0 发布。Microsoft 受IBM 的委托开发DOS 操作系统,他们从Tim Paterson 那里购买了一个叫86-DOS 的程序并加以改进。由IBM 销售的版本叫PC-DOS,由Microsoft 销售的叫MS-DOS 。Microsoft 与IBM 的合作一直到1991 年的DOS 5.0 为止。最初的DOS 1.0非常简陋,每张盘上只有一个根目录,不支持子目录,直到1983 年3 月的2.0 版才有所改观。MS-DOS在1995 年以前一直是与IBM-PC 兼容的操作系统,Windows 95 推出并迅速占领市场之后,其最后一个版本命名为DOS 7.0 。 1982 年:基于TCP/IP 协议的Internet 初具规模。 1982 年2 月:80286 发布,时钟频率提高到20MHz 、增加了保护模式、可访问16MB 内存、支持1GB以上的虚拟内存、每秒执行270 万条指令、集成了13.4 万个晶体管。 1983 年春季:IBM XT 机发布,增加了10MB 硬盘、128KB 内存、一个软驱、单色显示器、一台打印机、可以增加一个8087 数字协处理器。当时的价格为5000 美元。 1983 年3 月:MS-DOS 2.0 和PC-DOS 2.0 增加了类似UNIX 分层目录的管理形式。 1984 年:DNS(Domain Name Server)域名服务器发布,互联网上有1000 多台主机运行。 1984 年底:Compaq 开始开发IDE 接口,能以更快的速度传输数据,并被许多同行采纳,后来在此基础上开发出了性能更好的EIDE 接口。 1985 年:Philips 和SONY 合作推出CD-ROM 驱动器。 1985 年10 月17 日:80386 DX 推出 。时钟频率达到33MHz 、可寻址1GB 内存 、每秒可执行600万条指令、集成了275000 个晶体管。 1985 年11 月:Microsoft Windows 发布。该操作系统需要DOS 的支持,类似苹果机的操作界面 ,以致被苹果控告,该诉讼到1997 年8 月才终止。 1985 年12 月:MS-DOS 3.2 和PC-DOS 3.2 发布。这是第一个支持3.5 英寸磁盘的系统,但只支持到720KB,3.3 版才支持1.44MB 。 1987 年:Microsoft Windows 2.0 发布。 1988 年:EISA 标准建立。 1989 年:欧洲物理粒子研究所的Tim Berners-Lee 创立World Wide Web 雏形。通过超文本链接,新手也可以轻松上网浏览。这大大促进了Internet 的发展。 1989 年3 月:EIDE 标准确立,可以支持超过528MB 的硬盘,能达到33.3MB/s 的传输速度,并被许多CD-ROM 所采用。 1989 年4 月10 日:80486 DX 发布。该处理器集成了120 万个晶体管,其后继型号的时钟频率达到100MHz 。 1989 年11 月:Sound Blaster Card(声卡)发布。 1990 年5 月22 日:微软发布Windows 3.0,兼容MS-DOS 模式。 1990 年11 月:第一代MPC(多媒体个人电脑标准)发布。该标准要求处理器至少为80286/12MHz(后来增加到80386SX/16MHz)及一个光驱,至少150KB/sec 的传输率。 1991 年:ISA 标准发布。 1991 年6 月:MS-DOS 5.0 和PC-DOS 5.0 发布。为了促进OS/2 的发展,Bill Gates 说DOS5.0 是 DOS 终结者,今后将不再花精力于此。该版本突破了640KB 的基本内存限制。这个版本也标志着微软与IBM 在DOS 上合作的终结。 1992 年:Windows NT 发布,可寻址2GB 内存。 1992 年4 月:Windows 3.1 发布。 1993 年:Internet 开始商业化运行。 1993 年:经典游戏Doom 发布。 1993 年3 月22 日:Pentium 发布,该处理器集成了300 多万个晶体管、早期版本的核心频率为60 ~66MHz 、每秒钟执行1 亿条指令。 1993 年5 月:MPC 标准2 发布,要求CD-ROM 传输率达到300KB/s,在320 ×240 的窗口中每秒播放15 帧图像。 1994 年3 月7 日:Intel 发布90 ~100MHz Pentium 处理器。 1994 年:Netscape 1.0 浏览器发布。 1994 年:著名的即时战略游戏CommandConquer(命令与征服)发布。 1995 年3 月27 日:Intel 发布120MHz 的Pentium 处理器。 1995 年6 月1 日:Intel 发布133MHz 的Pentium 处理器。 1995 年8 月23 日:纯32 位的多任务操作系统Windows 95 发布。该操作系统大大不同于以前的版本 ,完全脱离MS-DOS,但为照顾用户习惯还保留了DOS 模式。Windows 95 取得了巨大成功。 1995 年11 月1 日:Pentium Pro 发布,主频可达200MHz 、每秒可执行4.4 亿条指令、集成了550万个晶体管。 1995 年12 月:Netscape 发布其JavaScript 。 1996 年1 月:Netscape Navigator 2.0 发布。这是第一个支持JavaScript 的浏览器。 1996 年1 月4 日:Intel 发布150 ~166MHz 的Pentium 处理器,集成了310 ~330 万个晶体管。 1996 年:Windows 95 OSR2 发布,修正了部分BUG,扩充了部分功能。 1997 年:Heft Auto 、Quake 2 和Blade Runner 等著名游戏软件发布,并带动3D图形加速卡迅速崛起。 1997 年1 月8 日:Intel 发布Pentium MMX CPU,处理器的游戏和多媒体功能得到增强。 1997 年4 月:IBM 的深蓝(Deep Blue)计算机战胜人类国际象棋世界冠军卡斯帕罗夫。 1997 年5 月7 日:Intel 发布Pentium Ⅱ,增加了更多的指令和Cache 。 1997 年6 月2 日:Intel 发布233MHz Pentium MMX 。 1998 年2 月:Intel 发布333MHz Pentium Ⅱ处理器,采用0.25 μm 工艺制造,在速度提升的同时减少了发热量。 1998 年6 月25 日:Microsoft 发布Windows 98,一些人企图肢解微软,微软回击说这会伤害美国的国家利益。 1999 年1 月25 日:Linux Kernel 2.2.0 发布,人们对其寄予厚望。 1999 年2 月22 日:AMD 公司发布K6-3 400MHz 处理器。 1999 年7 月:Pentium Ⅲ发布,最初时钟频率在450MHz 以上,总线速度在100MHz 以上,采用0.25μm 工艺制造,支持SSE 多媒体指令集,集成有512KB 以上的二级缓存。 1999 年10 月25 日:代号为Coppermine(铜矿)的Pentium Ⅲ处理器发布。采用0.18 μm 工艺制造的Coppermine 芯片内核尺寸进一步缩小,虽然内部集成了256KB 全速On-Die L2 Cache ,内建2800万个晶体管,但其尺寸却只有106 平方毫米。 2000 年3 月:Intel 发布代号为“Coppermine 128 ”的新一代的Celeron 处理器。新款Celeron 与老Celeron 处理器最显著的区别就在于采用了与新P Ⅲ处理器相同的Coppermine核心及同样的FC-PGA封装方式,同时支持SSE 多媒体扩展指令集。 2000 年4 月27 日:AMD 宣布正式推出Duron 作为其新款廉价处理器的商标,并以此准备在低端向Intel 发起更大的冲击,同时,面向高端的ThunderBird 也在其后的一个月间发布。 2000 年7 月:AMD 领先Intel 发布了1GHz 的Athlon 处理器,随后又发布了1.2GMHz Athlon处理器。 2000 年7 月:Intel 发布研发代号为Willamette 的Pentium 4 处理器,管脚为423 或478根,其芯片内部集成了256KB 二级缓存,外频为400MHz,采用0.18 μm 工艺制造 ,使用SSE2指令集,并整合了散热器,其主频从1.4GHz 起步。 2001 年5 月14 日,AMD 发布用于笔记本电脑的Athlon 4 处理器。该处理器采用0.18 微米工艺造,前端总线频率为200MHz,有256KB 二级缓存和128KB 一级缓存。 2001 年5 月21 日,VIA 发布C3 出处理器 。该处理器采用 0.15 微米工艺制造(处理器核心仅为2mm 2 ), 包括192KB 全速缓存(128KB 一级缓存、64KB 二级缓存),并采用Socket370 接口。支持133MHz 前端总线频率和3DNow!、MMX 多媒体指令集。 2001 年8 月15 日,VIA 宣布其兼容DDR 和SDRAM 内存的P4 芯片组P4X266 将大量出货。该芯片组的内存带宽达到4GB,是i850 的两倍。 2001 年8 月27 日,Intel 发布主频高达2GHz 的P4 处理器。每千片的批发价为562 美元。

希望采纳

js里面的~这个是运算符吗?

你好,有这样的运算,~是按位取反的操作,如:1的单字节二进制是00000001取反后就是11111110,最高位为符号位,转为成十进制就是-2.

下面这边文章来自:

有助于更好理解。

也可参阅

【数据结构知识点】中的 数据类型 ,地址:

【以下内容非本人原创,望对提问者有所帮助】

负数:

原码就是原来的表示方法

反码是除符号位(最高位)外取反

补码=反码+1

以前学习二进制编码时,老师讲了一堆堆的什么原码啊反码啊补码啊xxxx转换啊,还有负数的表示方式啊 总是记不零清,终于从网上找到了一种比较好的讲解方式,保存再share一下,不过为了系统化讲解,又找来了一些编码的基础知识,如果只想看负数编码记忆法,请跳转到

1.如果你不知道二进制怎么编码,请继续,否则请跳到2

1字节 = 8位,所以它能表示的最大数当然是8位都是1(既然2进制的数只能是0或1,如果是我们常见的10进制,那就8位都为9,这样说,你该懂了?)

1字节的二进制数中,最大的数:11111111。

这个数的大小是多少呢?让我们来把它转换为十进制数。

无论是什么进制,都是左边是高位,右边是低位。10进制是我们非常习惯的计数方式,第一位代表有几个1(即几个100),第二位代表有几个10(即几个101),第三位代表有几个100(即有几个102)…,用小学课本上的说法就是:个位上的数表示几个1,十位上的数表示向个10,百位上的数表示几个100……

同理可证,二进制数则是:第1位数表示几个1 (20),第2位数表示几个2(21),第3位数表示几个4(22),第4位数表示向个8(23)……

以前我们知道1个字节有8位,现在通过计算,我们又得知:1个字节可以表达的最大的数是255,也就是说表示0~255这256个数。

那么两个字节(双字节数)呢?双字节共16位。 1111111111111111,这个数并不大,但长得有点眼晕,从现在起,我们要学会这样来表达二制数:

1111 1111 1111 1111,即每4位隔一空格。

双字节数最大值为:

1 * 215 + 1 *214 + 1* 213 + 1 * 212 + 1 * 211 + 1 * 210 + …… + 1 * 22 + 1 * 21 + 1* 20 = 65535

    很自然,我们可以想到,一种数据类型允许的最大值,和它的位数有关。具体的计算方法方法是,如果它有n位,那么最大值就是:

n位二进制数的最大值:1 * 2(n-1) + 1 * 2(n-2) + ... + 1 * 20

2、理解有符号数和无符号数

负数在计算机中如何表示呢?这一点,你可能听过两种不同的回答。

一种是教科书,它会告诉你:计算机用“补码”表示负数。可是有关“补码”的概念一说就得一节课,这一些我们需要在第6章中用一章的篇幅讲2进制的一切。再者,用“补码”表示负数,其实一种公式,公式的作用在于告诉你,想得问题的答案,应该如何计算。却并没有告诉你为什么用这个公式就可以和答案? -----我就是被这个弄混淆的_

另一种是一些程序员告诉你的:用二进制数的最高位表示符号,最高位是0,表示正数,最高位是1,表示负数。这种说法本身没错,可是如果没有下文,那么它就是错的。至少它不能解释,为什么字符类型的-1用二进制表示是“1111 1111”(16进制为FF);而不是我们更能理解的“1000 0001”。(为什么说后者更好理解呢?因为既然说最高位是1时表示负数,那1000 0001不是正好是-1吗?-----re!当初偶就是这么想的,so一直在脑中打架,越打越混淆=,=)。

让我们从头说起。

2.1、你自已决定是否需要有正负。

就像我们必须决定某个量使用整数还是实数,使用多大的范围数一样,我们必须自已决定某个量是否需要正负。如果这个量不会有负值,那么我们可以定它为带正负的类型。

在计算机中,可以区分正负的类型,称为有符类型,无正负的类型(只有正值),称为无符类型。

数值类型分为整型或实型,其中整型又分为无符类型或有符类型,而实型则只有符类型。

字符类型也分为有符和无符类型。

比如有两个量,年龄和库存,我们可以定前者为无符的字符类型,后者定为有符的整数类型。

2、使用二制数中的最高位表示正负。

首先得知道最高位是哪一位?1个字节的类型,如字符类型,最高位是第7位,2个字节的数,最高位是第15位,4个字节的数,最高位是第31位。不同长度的数值类型,其最高位也就不同,但总是最左边的那位(如下示意)。字符类型固定是1个字节,所以最高位总是第7位。

(红色为最高位)

单字节数: 1111 1111

双字节数: 1111 1111 1111 1111

四字节数: 1111 1111 1111 1111 1111 1111 1111 1111

当我们指定一个数量是无符号类型时,那么其最高位的1或0,和其它位一样,用来表示该数的大小。

当我们指定一个数量是有符号类型时,此时,最高数称为“符号位”。为1时,表示该数为负值,为0时表示为正值。

 3、无符号数和有符号数的范围区别。

无符号数中,所有的位都用于直接表示该值的大小。有符号数中最高位用于表示正负,所以,当为正值时,该数的最大值就会变小。我们举一个字节的数值对比:

无符号数: 1111 1111   值:255 1* 27 + 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20

有符号数: 0111 1111   值:127         1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20

  同样是一个字节,无符号数的最大值是255,而有符号数的最大值是127。原因是有符号数中的最高位被挪去表示符号了。并且,我们知道,最高位的权值也是最高的(对于1字节数来说是2的7次方=128),所以仅仅少于一位,最大值一下子减半。

不过,有符号数的长处是它可以表示负数。因此,虽然它的在最大值缩水了,却在负值的方向出现了伸展。我们仍一个字节的数值对比:

无符号数:                       0 ----------------- 255

有符号数:        -128 --------- 0 ---------- 127

 

同样是一个字节,无符号的最小值是 0 ,而有符号数的最小值是-128。所以二者能表达的不同的数值的个数都一样是256个。只不过前者表达的是0到255这256个数,后者表达的是-128到+127这256个数。

一个有符号的数据类型的最小值是如何计算出来的呢?

有符号的数据类型的最大值的计算方法完全和无符号一样,只不过它少了一个最高位(见第3点)。但在负值范围内,数值的计算方法不能直接使用1* 26 + 1* 25 的公式进行转换。在计算机中,负数除为最高位为1以外,还采用补码形式进行表达。所以在计算其值前,需要对补码进行还原。这里,先直观地看一眼补码的形式:

以我们原有的数学经验,在10进制中:1 表示正1,而加上负号:-1 表示和1相对的负值。

那么,我们会很容易认为在2进制中(1个字节): 0000 0001 表示正1,则高位为1后:1000 0001应该表示-1。

然而,事实上计算机中的规定有些相反,请看下表:

二进制值(1字节)     十进制值    

1000 0000红色的1代表负数蓝色的是补码(补码=反码+1)     -128    

1000 0001蓝色部分代表多大的值?:将补码还原为原码     -127想化成负数?:先减去1再按位取反    

1000 0010还原方法:补码-1再取反     -126    

1000 0011     -125    

...     ...    

1111 1110     -2    

1111 1111     -1    

 

首先我们看到,从-1到-128,其二进制的最高位都是1(表中标为红色),正如我们前面的学。

然后我们有些奇怪地发现,1000 0000 并没有拿来表示 -0;而1000 0001也不是拿来直观地表示-1。事实上,-1 用1111 1111来表示。

怎么理解这个问题呢?先得问一句是-1大还是-128大?

当然是 -1 大。-1是最大的负整数。以此对应,计算机中无论是字符类型,或者是整数类型,也无论这个整数是几个字节。它都用全1来表示 -1。比如一个字节的数值中:1111 1111表示-1,那么,1111 1111 - 1 是什么呢?和现实中的计算结果完全一致。1111 1111 - 1 = 1111 1110,而1111 1110就是-2。这样一直减下去,当减到只剩最高位用于表示符号的1以外,其它低位全为0时,就是最小的负值了,在一字节中,最小的负值是1000 0000,也就是-128。

--------小米批注:就是这部分蓝色的文字,让我终于能记清楚-1的编码方式了,汗=。=

我们以-1为例,来看看不同字节数的整数中,如何表达-1这个数:

字节数     二进制值     十进制值    

单字节数     1111 1111红色表示负数蓝色部分的补码为值1     -1    

负数:原码就是原来的表示方法、反码是除符号位(最高位)外取反、补码=反码+1双字节数     1111 1111 1111 1111     -1    

四字节数     1111 1111 1111 1111 1111 1111 1111 1111     -1    

可能有同学这时会混了:为什么 1111 1111 有时表示255,有时又表示-1?所以我再强调一下本节前面所说的第2点:你自已决定一个数是有符号还是无符号的。写程序时,指定一个量是有符号的,那么当这个量的二进制各位上都是1时,它表示的数就是-1;相反,如果事选声明这个量是无符号的,此时它表示的就是该量允许的最大值,对于一个字节的数来说,最大值就是255。

ok 摘抄暂告段落,其实原文对于c的一些基础数据类型知识介绍的非常详细,8过太长了,摘到我需要的内容后就没全帖过来,如果有需要学习的同学,建议参见原文:)

转自

关键字: 二进制编码,负数二进制,二进制

1-6 什么叫机器数?计算机为什么要采用补码?

2007-09-09 14:24:25

大 中 小

标签:教育杂谈

在计算机内部,所有信息都是用二进制数串的形式表示的。整数通常都有正负之分,计算机中的整数分为无符号的和带符号的。无符号的整数用来表示0和正整数,带符号的证书可以表示所有的整数。由于计算机中符号和数字一样,都必须用二进制数串来表示,因此,正负号也必须用0、1来表示。通常我们用最高的有效位来表示数的符号(当用8位来表示一个整数时,第8位即为最高有效位,当用16位来表示一个整数时,第16位即为最高有效位。)0表示正号、1表示负号,这种正负号数字化的机内表示形式就称为“机器数”,而相应的机器外部用正负号表示的数称为“真值”。将一个真值表示成二进制字串的机器数的过程就称为编码。

无符号数没有原码、反码和补码一说。只有带符号数才存在不同的编码方式。

带符号整数有原码、反码、补码等几种编码方式。原码即直接将真值转换为其相应的二进制形式,而反码和补码是对原码进行某种转换编码方式。正整数的原码、反码和补码都一样,负数的反码是对原码的除符号位外的其他位进行取反后的结果(取反即如果该位为0则变为1,而该位为1则变为0的操作)。而补码是先求原码的反码,然后在反码的末尾位加1 后得到的结果,即补码是反码+1。IBM-PC中带符号整数都采用补码形式表示。(注意,只是带符号的整数采用补码存储表示的,浮点数另有其存储方式。)

采用补码的原因或好处如下。

采用补码运算具有如下两个特征:

1)因为使用补码可以将符号位和其他位统一处理,同时,减法也可以按加法来处理,即如果是补码表示的数,不管是加减法都直接用加法运算即可实现。

2)两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。

这样的运算有两个好处:

1)使符号位能与有效值部分一起参加运算,从而简化运算规则。从而可以简化运算器的结构,提高运算速度;(减法运算可以用加法运算表示出来。)

2)加法运算比减法运算更易于实现。使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。

下面深入分析上面所陈述的采用补码的原因(目的)。

用带符号位的原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题,如下:假设字长为8bits

( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 = ( 0 )10

(00000001)原 + (10000001)原 = (10000010)原 = ( -2 ) 显然不正确.。

因为在两个整数的加法运算中是没有问题的,于是就发现问题出现在带符号位的负数身上,对除符号位外的其余各位逐位取反就产生了反码。反码的取值空间和原码相同且一一对应。下面是反码的减法运算:

( 1 )10 - ( 1 ) 10= ( 1 ) 10+ ( -1 ) 10= ( 0 )10

(00000001) 反+ (11111110)反 = (11111111)反 = ( -0 ) 有问题。

( 1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 = ( -1 )10

(00000001) 反+ (11111101)反 = (11111110)反 = ( -1 ) 正确

问题出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分的。

于是就引入了补码概念。负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的。在补码中用(-128)代替了(-0),所以补码的表示范围为:

(-128~0~127)共256个。

注意:(-128)没有相对应的原码和反码, (-128) = (10000000) 补码的加减运算如下:

( 1 ) 10- ( 1 ) 10= ( 1 )10 + ( -1 )10 = ( 0 )10

(00000001)补 + (11111111)补 = (00000000)补 = ( 0 ) 正确

( 1 ) 10- ( 2) 10= ( 1 )10 + ( -2 )10 = ( -1 )10

(00000001) 补+ (11111110) 补= (11111111)补 = ( -1 ) 正确

采用补码表示还有另外一个原因,那就是为了防止0的机器数有两个编码。原码和反码表示的0有两种形式+0和-0,而我们知道,+0和-0是相同的。这样,8位的原码和反码表示的整数的范围就是-127~+127(11111111~01111111),而采用补码表示的时候,00000000是+0,即0;10000000不再是-0,而是-128,这样,补码表示的数的范围就是-128~+127了,不但增加了一个数得表示范围,而且还保证了0编码的唯一性。

整数和0的原码、反码和补码都相同,下面介绍手工快速求负数补码的方法。这个方法在教材的第8页已经提到了,这里再写出来以便能引起大家的注意。其方法如下:

先写出该负数的相反数(正数),再将该正数的二进制形式写出来,然后对这个二进制位串按位取反,即若是1则改为0,若是0则改为1,最后在末位加1。

接下来的问题是,如何能将减法运算转换成加法运算呢?

我们已经知道,原码表示简单直观,与真值转换容易。但如果用原码表示,其符号位不能参加运算。在计算机中用原码实现算术运算时,要取绝对值参加运算,符号位单独处理,这对乘除运算是很容易实现的,但对加减运算是非常不方便的,如两个异号数相加,实际是要做减法,而两个异号数相减,实际是要做加法。在做减法时,还要判断操作数绝对值的大小,这些都会使运算器的设计变得很复杂。而补码这种编码方式实际上正是针对上述问题的。通过用补码进行表示,就可以把减法运算化为加法运算。

在日常生活中,有许多化减为加的例子。例如,时钟是逢12进位,12点也可看作0点。当将时针从10点调整到5点时有以下两种方法:

一种方法是时针逆时针方向拨5格,相当于做减法:

10-5=5

另一种方法是时针顺时针方向拨7格,相当于做加法:

10+7=12+5=5    (MOD 12)

这是由于时钟以12 为模,在这个前提下,当和超过12时,可将12舍去。于是,减5相当于加7。同理,减4可表示成加8,减3可表示成加9,…。

在数学中,用“同余”概念描述上述关系,即两整数A、B用同一个正整数M (M称为模)去除而余数相等,则称A、B对M同余,记作:

A=B     (MOD M)

具有同余关系的两个数为互补关系,其中一个称为另一个的补码。当M=12时,-5和+7,-4和+8,-3和+9就是同余的,它们互为补码。

从同余的概念和上述时钟的例子,不难得出结论:对于某一确定的模,用某数减去小于模的另一个数,总可以用加上“模减去该数绝对值的差”来代替。因此,在有模运算中,减法就可以化作加法来做。

可以看出,补码的加法运算所依据的基本关系为:

[x]补+ [y]补= [x+y]补

补码减法所依据的基本关系式:

[x-y]补 =[x+(-y)]补= [x]补+ [-y]补

至于加法运算为什么比减法运算易于实现以及CPU如何实现各种算术运算等问题,则需要通过对数字电路的学习来理解CPU的运算器的硬件实现问题的相关内容了。


当前题目:JavaScript字长,js字典长度
分享链接:http://scjbc.cn/article/dsdgoih.html

其他资讯