动手动脑

计算机底层存储数据时使用的是二进制数字,但是计算机在存储一个数字时并不是直接存储该数字对应的二进制数字,而是存储该数字对应二进制数字的补码。

机器数:一个数在计算机的存储形式是二进制数,我们称这些二进制数为机器数,机器数是有符号,在计算机中用机器数的最高位存放符号位,0表示正数,1表示负数。

机器数的真值:因为带有符号位,所以机器数的形式值不等于其真值,以机器数1000 0111为例,其真正表示的值为-7,而形式值为135。将带符号的机器数的真正表示的值称为机器数的真值。

原码

原码的表示与机器数真值表示的一样,即用第一位表示符号,其余位表示数值,例如的十进制的的正负1,用8位二进制的原码表示如下:

+1】= 原:[ 0000 0001 ]

-1】= 原:[ 1000 0001 ]

 

反码

反码的表示方法为:

正数的反码是其原码本身。

负数的反码是在其原码的基础上,符号位不变,其余各位取反。

+1】= 原: [ 0000 0001 ] = 反:[ 0000 0001 ]

-1】 = 原:[ 1000 0001 ] = 反:[ 1111 1110 ]

 

补码

补码的表示方法为:

正数的补码是其原码本身。

负数的补码是在其原码的基础上,符号位不变,其余各位取反后加1(即在反码的基础上加1)。

+1】= 原: [ 0000 0001 ] = 反:[ 0000 0001 ] = 补:[ 0000 0001 ]

-1】 = 原:[ 1000 0001 ] = 反:[ 1111 1110 ] = 补:[ 1111 1111 ]

数据在计算机中的存储形式

计算机实际只存储补码, 所以原码转换为补码的过程,也可以理解为数据存储到计算机内存中的过程。

在原、反、补码中,正数的表示是一模一样的,而负数的表示是不相同的,所以对于负数的补码来说,我们是不能直接用进制转换将其转换为十进制数值的,因为这样是得不到计算机真正存储的十进制数的,所以应该将其转换为原码后,再将转换得到的原码进行进制转换为十进制数。(机器数包含符号位)

枚举类型的基本用法

枚举类型是引用类型。枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。

可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。

同名变量的屏蔽原则

结论:每个变量都有一个有效区域,即定义的那片区域,出了这个区域,变量将不再有效。(全局变量除外)

栗子:

package test;

public class Test {
private static int Albert = 1;
public static void main(String[] args) {
int Albert = 2;
System.out.println(Albert);
}
}

结果:

2

查看Java中每个数据类型所占的位数,和表示数值的范围,并得出结论。

java中有8种基本数据类型:byte、int、short、long、boolean、char、float、double
对应的类为:Byte、Int、Short、Long、Boolean、Charecter、Float、Double
逻辑型:boolean
文本型:char
整数型:byte、short、int、long
浮点型:float、double
byte:    1字节 -128~127
short:   2字节 -2^15~2^15-1
int :      4字节 -2^31~2^31-1
long:    8字节 -2^63~2^63-1
boolean:1字节 true false(java中不能以0或非0代替)
float:    4字节 -3.403E38~3.403E38
double:8字节 -1.798E308~- 4.9E324
char:    2字节  ’\u0000‘~‘ ’\uffff ‘(16进制的,换算过来即0~65535)
(1字节等于8位)
结论:由基本到复杂。
 
posted @   就叫清风吧  阅读(187)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示