您的位置:首页 > 编程语言 > Java开发

二进制的1111 1111如何才能得到255的结果

2016-03-07 22:38 603 查看
首先我们看下java中byte类型的具体表示:

byte字节类型是JAVA中最小的数据类型,它在内存中占8位,取值范围从-128到127,

赋值:byte i = 127;

注:byte型在赋值时,一旦超过127或小于-128,则会产生编译错误。

char字符类型在内存中占2个字节。表示一个字符,也可以使用A SCII码范围内的值来给char型的变量赋值。由于字符在内存中的取值不存在负数范围,所有取值范围从0到655 35。

赋值:char i = ‘a’; 或者 char i = 97;

注:在java中,字符的表现形式为单个字符加上一对单引号修饰。

然后我们写个java测试程序,实验一下:

通过实验得出结论,实验代码如下:

/**

* @param args

*/

public static void main(String[] args) throws Exception{

// System.out.println(“hello!”);

/**
* oxff的二进制是1111 1111,
* 表示255只能用int才可以,00000000 00000000 00000000 11111111,这就是表示255
* 而byte只有八个字节1111 1111,表示的值是-1.范围是-128--127
* */
byte b = (byte) 0xff;
int i = 0xff;
byte b2 = -1;

System.out.println(b);
System.out.println(0xff);
System.out.println("---------------------");
System.out.println(i);
System.out.println("---------------------");
System.out.println(b2);
System.out.println(b2 & b);
System.out.println(b2 & 0xff);

/**
* 从上面的实验不难看出,二进制的11111111,要想得到255的记过就必须和0xff直接做与运算,
* 因为一个byte跟0xff相与会先将那个byte转化成整形运算,这样,结果中的高的24个比特就总会被清0,于是结果总是我们想要的。
* 而如果跟(byte) 0xff相与,得到结果任然是11111111,即-1.
* */
}


运行结果如下:

-1

255

255

-1

-1

255

最后补充一点java基本数据类型的知识:

ava基本数据类型就8种,记住就好了。除了这些都是引用型的了。

java四类八种基本数据类型

第一类:整型 byte short int long

第二类:浮点型 float double

第三类:逻辑型 boolean(它只有两个值可取true false)

第四类:字符型 char

在栈中可以直接分配内存的数据是基本数据类型。

引用数据类型:是数据的引用在栈中,但是他的对象在堆中。

要想学好Java必须知道各种数据的在内存中存储位置。

对内存有了很好的了解,可以有助你分析程序。

字节:

boolean 布尔型 1/8

byte 字节类型 1

char 字符型 2 一个字符能存储一个中文汉字

short 短整型 2

int 整数类型 4

float 浮点类型(单精度) 4

long 长整形 8

double 双精度类型(双精度) 8

java中默认的整数类型是int类型,如果要定义为float型,则要在数值后加上l或L;

默认的浮点型也是双精度浮点,如果要定义为float型,则要在数值后加上f或F。

一个字节等于8位,一个字节等于256个数,就是-128到127一共256。

kB就是kBytes

Bytes就是“字节”的意思!

K就是千的意思,因为计算机是通过二进制来计算,10个1正好是1024

1111111111(二进制)=1024(十进制)

1Bytes(字节)=8bit(比特)

一个英文字母或一个阿拉伯数字就是一个字符,占用一个字节

一个汉字就是两个字符,占用两个字节。

一般讲大小是用Bytes,大写的“B”,讲网络速率是用bit,注意是小写的“b”。

例:一个文件有8MBytes

例:我下载文件的速率是256KB/s,即2Mbit,这通常就是我们宽带上网的速率。

基本数据类型自动转换

byte->short,char -> int -> long

float -> double

int -> float

long -> double

记住:小可转大,大转小会失去精度!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二进制 byte java中byte