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

首先我们看下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

记住:小可转大,大转小会失去精度!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值