为什么二进制不直接储存源码(源代码是二进制的吗)
本文目录一览:
- 1、二进制文件和程序源代码的关系和区别?
- 2、按位取反运算符
- 3、为什么计算机中信息要用二进制的方式存储?
- 4、计算机内部如何存储数据,关于源码、补码的问题!
- 5、求问大神 既然硬盘上储存程序代码已经是二进制的,为什么不能直接执行,还需要再编译一下呢?
二进制文件和程序源代码的关系和区别?
二进制文件是源代码经过编译器编译之后为什么二进制不直接储存源码的产物为什么二进制不直接储存源码,二进制内容能比cpu直接读取和使用,源代码不行
按位取反运算符
~077o=11000000b是没有错的,但在计算机中,整数是使用补码来表示的。正数的补码与原码相同,而负数的补码则是最高位为1表示负数,其余低位是将该负数的绝对值取反加1来表示的。
例如-64d,如果用8位二进制补码表示的话,最高位为1表示负数,其余7位则将-64d的绝对值64d=1000000b,取反加1得1000000,与符号位(最高位)1拼接就是11000000,所以11000000表示-64d。(后缀o表示八进制数,d表示十进制数,b表示二进制数)。
为什么计算机中信息要用二进制的方式存储?
很简单,二进制就是0、1,在电子线路中可以用晶体管模拟开关的通和断来表示。集成电路中大量制作构造相同的模拟开关是很方便的。很难估计,如果用十进制,在集成电路中设计可以表示十种状态的电子线路,并前要数以亿计的重复排列,工作量有多大,复杂程度有多高,实际上以现在的技术水平,根本造不出和现有处理器性能相当的十进制处理器,实际上也没有必要。
在储存、传送中,用二进制也有独特的优越性。如DVD,可以用小坑和平面代替0和1,如果存储的数据是10进制,就要相应有控制10种小坑的手段,复杂程度是难以想象的,也许买一个光驱就要10台电脑的代价。
计算机内部如何存储数据,关于源码、补码的问题!
1.
补码
(1)正数的补码
与原码相同。 【例1】+9的补码是00001001。(备注:这个+9的补码说的是用8位的2进制来表示补码的,补码表示方式很多,还有16位2进制补码表示形式,以及32位2进制补码表示形式等。)
(2)负数的补码
符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。 同一个数字在不同的补码表示形式里头,是不同的。比方说-15的补码,在8位2进制里头是11110001,然而在16位2进制补码表示的情况下,就成了1111111111110001。在这篇补码概述里头涉及的补码转换默认了把一个数转换成8位2进制的补码形式,每一种补码表示形式都只能表示有限的数字。
原码
原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面 原码
增加了一位符号位(即最高位为符号位),该位为0表示正数或者0(当为0时第一位不能为1,因为如果把10000000也当成0会造成和-128原码冲突),该位为1表示负数,其余位表示数值的大小。
反码
所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
2.
(1)、在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
(2)、补码与原码的转换过程几乎是相同的
3. 2.^4+2.^1 = 17 表示 17
谢谢 采纳
求问大神 既然硬盘上储存程序代码已经是二进制的,为什么不能直接执行,还需要再编译一下呢?
我的理解是为什么二进制不直接储存源码:计算机能够执行的是机器指令。程序本身虽然是以二进制文件的形式存储在磁盘中,但是这里存储的只是程序中字面量转换成二进制的形式存储。所以需要通过程序对应的编译器将其编译成对应的机器指令文件。而执行就是执行机器指令文件为什么二进制不直接储存源码了。
#就拿Java语言来说为什么二进制不直接储存源码:
源文件是以**.java的文件形式存储在磁盘中的。但是这样的文件相当于只是将其中的文本转换成了二进制。计算机根本不知道该如何执行。
通过Java的编译器将其转换成**.class文件后,class文件虽然也是二进制存储,但是有自己的结构:魔数,副版本号,主版本号,常量池计数器,常量池,访问标志位,类索引,父类索引等等。但是这个东西计算机不能直接执行的,需要通过Java虚拟机去执行。而Java虚拟机相当于是模拟计算机,也有个程序计数器啥的。我个人认为应该是将.class文件中的字节码通过jvm中的执行引擎转换成对应的虚拟机指令。然后才能执行。而在真正执行的时候虚拟机中对应的虚拟机指令也是要转换成对应的机器指令才能执行