background image

Java 编程-计算机内部的数据表达

1.3 计算机内部的数据表达
计算机内部数据表达的总原则就是:把一切内容数值化、数字化。这个也是编程时处理数
据的基本方式,对于编程理解的越深入,则将越认同该原则。
其实计算机也只能这样,因为计算机内部只能存储 0 和 1 两个数字,所以必须把指令、数
据、图片、文本等各种各样的内容数字化成 0 和 1 进行存储、传输和显示。
1.3.1 整数的表达
整数有正负之分,但是计算机内部只能存储 0 和 1,则计算机内部将符号数字化,用二
进制码的最高位代表符号位,规定该位为 0 代表正,1 代表负。这就是符号数字化的规定。
前面介绍过整数在计算机内部都是以二进制的形式保存的。但是为了计算方便,以及简化
CPU 的结构,所以在存储和运算时都采用补码的形式。
前面介绍的那些直接计算出来的二进制形式,都称作整数的原码。规定正数的原码、反码
和补码都是自身。
而对于负数,仔细研究一下其组成格式。以 8 位机为例,也就是一个数字占计算机中的 8
位,也就是一个字节,用最高位存储符号位,其它的位存储数值。例如-8 的原码是
10001000,最高位的 1 代表负数,后续的 7 位代表数值。
负数的反码是指符号位不变,其他的位取反,也就是 0 变 1,1 变 0,则-8 的反码是
11110111。
负数的补码是指在反码的数值位上加 1,运算后得到的结果,只计算数值位,不改变符
号位。则-8 的补码是 11111000,该次运算中,低位向高位进行了进位。
规律:补码的补码等于负数的原码。
也就是对负数的补码再求补,则得到的负数的原码。

熟悉整数的表达,对于后续理解数据的区间以及进行强制转换以后得到的数值很有帮助 ,
也是进行位运算的基础。
备注:小数,编程语言中称浮点数,的存储形式和整数不同。
1.3.2 字符的表达
字符指计算机内部单个的符号,如标点符号、英文字母和汉字等等。因为这些字符种类各
异,计算机无法直接表达,那么就采用了计算机编程中也常用的方式,对每个字符进行
编号,例如规定 a 字符编号为 97,b 字符编号为 98 等等。
由于需要编号的字符很多,就专门规定了一系列字符和编号的对应规则,那么这些对应
表就被称作字符集,常见的字符集有 ASCII、GB2312、BIG5 等。
在计算机内部存储、运算和传输时,都只需要使用该编号即可。
字符集比较完美的解决了字符的存储和传输的问题。
所以字符在程序内部可以参与运算,其实参与运算的就是这个字符的编号,字符集规律
是很多字符变换逻辑实现的基础。
备注:字符的显示则通过专门的字符显示码实现。
1.3.3 总结