`
java2000.net
  • 浏览: 654076 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Java编程那些事儿8——计算机内部的数据表达

阅读更多
 
Java编程那些事儿8——计算机内部的数据表达
作者:陈跃峰
 
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 总结
         其实计算机内部所有的东西都是以数字的形式存储的,这里只是希望通过这两种简单的结构,使大家了解将数据数字化的思想,这是编程时常用的思想之一。
 
分享到:
评论

相关推荐

    Java编程那些事儿

    ### Java编程那些事儿 #### 程序设计概述与核心要素 **程序设计**,作为一项专业技能,涉及将现实世界的问题转化为计算机可执行的指令序列。本文将围绕《Java编程那些事儿》这本书的部分内容,深入浅出地探讨程序...

    java初级入门

    **1.1 Java编程那些事儿1——序言** 本章节主要介绍了作者撰写这本书的目的和背景,旨在帮助编程初学者更好地理解和掌握Java编程的基础知识。书中强调了通过通俗易懂的语言来解释复杂的概念,并计划覆盖以下核心...

    21天学通java

    3. **《JAVA编程那些事儿》电子书**: - 通过讲述真实的编程故事来传授经验和教训,有助于开发者避免常见错误并提高工作效率。 ### 总结 以上资源覆盖了Java编程的各个方面,从基础知识到高级主题,从理论到实践...

    java 程序员上班那点事儿

    【标签】:“java 程序员”标签明确指出了内容的核心——与Java编程语言和Java程序员的工作相关。Java是一种广泛使用的面向对象的编程语言,用于开发跨平台的应用程序,尤其在企业级应用中占有重要地位。 【压缩...

    Java程序员上班那点事儿

    ### Java程序员上班那点事儿——理解与解析 #### 前言 《Java程序员上班那点事儿》一书深入探讨了Java程序员职业生涯中的各种实际问题,包括但不限于职业规划、技能匹配、行业现状等方面。本文将从书中提到的核心...

    租房系统静态页面供java初学者用来学习

    这通常涉及到引入Java JSP或其他后端技术,以实现数据的服务器端处理和动态生成内容,这将是一个从静态到动态Web开发的进阶练习。 【标签】:“java租房系统jsp静态页面” “java”和“jsp”标签表明,虽然这个...

    程序员那点儿事儿

    成为一名合格的程序员,需要掌握一系列基础知识和概念,包括计算机硬件原理、编程语言、软件工程、数据结构与算法、操作系统原理、网络与多媒体技术等。这些知识构成了软件开发的基础,是解决实际问题、设计高效系统...

    庄晓丹:基于Clojure构建的移动云平台——我的Clojure实践思考

    尽管它是一种较新的语言,但其在函数式编程和并发处理方面的优势,使其在需要处理大规模数据和高并发场景时具有明显的性能和维护优势。 - 将Clojure应用于构建AVOSCloud这样的移动云平台,可以看作是Clojure技术...

    TRISHA:机器人教育那些事儿! Penn Apps 2014 年秋季

    机器人教育那些事儿! Penn Apps 2014 年秋季 作者:迪恩·威廉米、索耶·布鲁克斯、卡罗琳·沙利文、克里斯蒂娜·索里斯 TRISHA(Android 上的学校和家庭智能教学机器人)是一款旨在帮助学生学习编程和机器人技术的...

    flink-1.12.0-bin-scala_2.11.tgz

    2. **数据流模型**:Flink支持两种数据处理模式——流处理和批处理。流处理是无边界的,数据源源不断地流入;批处理则是有边界的,处理固定数量的数据集。Flink的DataStream API用于流处理,DataSet API用于批处理。...

Global site tag (gtag.js) - Google Analytics