现在的位置: 首页 > 综合 > 正文

二进制及基本数据类型

2013年08月12日 ⁄ 综合 ⁄ 共 2470字 ⁄ 字号 评论关闭

关于二进制
1 计算机只认识2进制。
2 一般只处理补码数据(自动处理+-号问题)
3 16进制是给人看的,是二进制的简写形式

计算机处理数据都是以Byte为最小单位处理的。
八位二进制的权:
128 64 32 16 8 4 2 1
16进制的权:256 16 1
01001001(2)= 64 + 8 + 1 = 73(10)
49(16) = 4×16 + 9×1 = 73(10)

16进制的数 0~9,a,b,c,d,e,f
0100 1001
4 9
1101 1111
d f
10进制转换为二进制
123(10) = 0111 1011(2)=7b(16)
128 64 32 16 8 4 2 1
0 1 1 1 1 0 1 1

补码
1 计算机只处理补码数据
2 正数的补码就是本身
3 负数补码,取反加一,负号转换成符号位
符号位(最高位):0表示正数,1表示负数
4 补码的符号位可以参与运算,会按照数学
运算规则自动处理符号转换问题。
5 补码转换原码,刨掉符号位,取反加一
-123(10) = - 111 1011(2)
= 1 000 0101(补)
-1(10) = - 000 0001(2)
= 1 111 1111(补)

-123(10) 10000101(补)
× -1(10) 11111111(补)
---------------------------------------
10000101
10000101
10000101
10000101
10000101
10000101
10000101
10000101
211111
---------------------------------------
123(10) 01111011(高于8位舍弃)

-123(10) 10000101(补)
+ -1(10) 11111111(补)
11111111
---------------------------------------
10000100(补)
-124(10) - 1111100(2)

16位补码:
-1(10)= - 000 0000 0000 0001
= 1 111 1111 1111 1111
= ffff

8位补码
MAX: 0111 1111(补) = 127(10) = 7f(16)
MIN: 1000 0000(补) = -128(10) = 80(16)
ff = -1

16位
MAX: 7fff(16)
MIN: 8000(16)
-1: ffff
00ff = 255

32位
MAX: 7fffffff(16)
MIN: 80000000(16)
-1: ffffffff(16)
0: 00000000(16);

注释
1 被javac 忽略的内容
// 单行注释
/* 多行注释 */
/** 文档注释 */

变量
1 变量的声明(定义)
如:int age;
2 变量必须声明并且初始化以后使用(读取)
初始化:就是第一次赋值
如:int age; age = 13;
经常声明直接初始化:int age=13;
3 变量一定有类型
Java变量分为:基本类型,引用类型
4 变量有作用域。是从声明的地方开始,到代码
块结束。
5 变量不能重复定义

Java 的标识符命名: 变量名,类名,方法名,
包名, 常量名。
1 必须以“字符” "_" "$" 为开头,不能是数字
“字符” 可以是任意Unicode
如:int 年龄 = 13;
习惯上只允许使用“英文”!
2 第二个字母可以是任意单词字符和数字
但是不能是特殊符号:+ - * / . 等
3 大小写敏感
4 不能使用关键字,if,new
5 可以使用长命名,推荐使用有实际意义的
命名
int a = 13; int age = 13;

关于关键字
1 goto const 保留字, 保留关键字
2 true, false, null 是字面量,不是关键字

参考题:选择Java关键字(多选)
A.if B.goto C.null D.sizeOf

基本数据类型 8 种
整数:byte, short, int, long
short 16位 有符号整数
MAX: 7fff 32767
MIN: 8000 -32768
很少使用的数据类型

int 32位有符号整数
max: 7fffffff 2G-1
min: 80000000 -2G
-1: ffffffff
非常常用,但是要注意取值范围。
关于整数字面量:
1 java 默认的整数字面量(直接给出的常数)是
int类型。
2 使用L l 为后缀,是long字面量
3 如果使用int字面量给小于它范围的数据类型
赋值, 如果不超过范围会自动完成。
如:byte b = 120; byte c = 0xffffffff;//-1
4 0x 开头是16进行,0开头是8进制
如:int i = 010;//8

long l = 0xffffffffL;
int i = 0xffff; //65535
short s = (short)0xffff;//-1

字符类型
1 字符是整数!是16位无符号整数
范围:0x0000 ~ 0xffff(65535)
2 字符数值是字符的Unicode(UTF-16BE)编码
16位定长编码,英文也是16位
3 与GBK不兼容,java支持自动的国际化编码。
4 英文部分编码与ASCII数值兼容
'A' -> 65
ASCII 'A'-> "41"
UTF-16BE 'A'-> "0041"
如:
char c = 20013;//‘中’
c = '中';//4e2d

浮点数,相当于科学计数法
float
double
1 大多使用double表示数据,精确
float 很少使用
2 默认的字面量是double类型
字面量使用D后缀 double
字面量使用f后缀 float
3 浮点数运算不够精确,不能精确比较
如:
double d = 2.6;
double g = d-2;

选择如下代码运行结果:
float f = 1.0;
System.out.println(f);

A.编译错误 B.1.0 C.1 D.1f

boolean 布尔类型
1 表示 真(true)假(false)的

推荐的方式:
boolean isMan = false;
boolean isRunning = true;
boolean started = true;
boolean found = true;
不推荐:
boolean b = true;

作业
把课堂代码写一遍
1 竖式计算 -63 * -4, -63 + -4
2 输出4种整数类型的最大值,最小值和-1
3 写出 -49 的补码(byte类型)和 16进制形式
写出 -2 的补码(byte类型)和 16进制形式
完成 -2 × -49 的竖式运算 和 16进制结果
5 输出‘中’ 前后10个字符。

抱歉!评论已关闭.