学习总结
今天总结一下上次课的学习内容,主要讲解一下原码反码补码的相关知识。
将一个整数转换成二进制形式,就是其原码。例如short a = 6; a 的原码就是0000000000000110。对于正数,它的反码就是其原码(原码和反码相同);负数的反码是将原码中除符号位外的所有位(数值位)取反,也就是 0 变成 1,1 变成 0。例如short a = 6; a 的原码和反码都是0000000000000110;更改 a 的值a = -18; 此时 a 的反码是1111111111101101。对于正数,它的补码就是其原码(原码、反码、补码都相同);负数的补码是其反码加 1。例如short a = 6; a 的原码、反码、补码都是0000000000000110;更改 a 的值a = -18; 此时 a 的补码是1111111111101110。
知道了三种定义后,三种形式的计算也尤为重要。反码算数运算,它的规则是从低位到高位逐列进行计算。0和0相加是0,0和1相加是1,1和1相加是0,但要产生一个进位1,加到下一列。如果最高位相加后产生进位,则最后得到的结果要加1。1特别注意的是,反码运算时,其符号位与数值一起参加运算。反码的符号位相加后,如果有进位出现,则要把它送回到最低位去相加(循环进位)。.用反码运算,其运算结果亦为反码。在转换为真值时,若符号位为0,数位不变;若符号位为1,应将结果求反才是其真值。
关于为什么double类型的数值进行运算得不到“数学上精确”的结果。一般情况下二进制转为十进制我们所使用的是按权相加法。十进制转二进制是除2取余,逆序排列法。十进制小数到二进制小数一般是整数部分除 2 取余,逆序排列,小数部分使用乘 2 取整数位,顺序排列。二进制小数到十进制小数还是使用按权相加法。我们的计算机在存储小数时肯定是有长度限制的,当转化过程中遇到循环转化时,计算机进行截取部分小数进行存储,从而导致计算机存储的数值只能是个大概的值,而不是精确的值。一个明显的例子就是计算机无法用二进制表示2.1这个十进制数,自然把它进行运算也无法得出精确结果。
对于Java中的String,String属于Java中的字符串类型,也是一个引用类型,并不属于基本的数据类型。Java中基本的数据类型只有八个,分别是数值型:byte、short、int、long;浮点型:float、double;字符型:char;布尔型:boolean。
最后是static,static的第一种含义:修饰全局变量时,表明一个全局变量只对定义在同一文件中的函数可见。static的第二种含义:修饰局部变量时,表明该变量的值不会因为函数终止而丢失。static的第三种含义:修饰函数时,表明该函数只在同一文件中调用。static的第四种含义:修饰类的数据成员,表明对该类所有对象这个数据成员都只有一个实例。即该实例归 所有对象共有。static的第五种含义:修饰类成员函数,用static修饰不访问非静态数据成员的类成员函数。这意味着一个静态成员函数只能访问它的参数、类的静态数据成员和全局变量。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言