二进制的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!”);
运行结果如下:
-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中最小的数据类型,它在内存中占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
记住:小可转大,大转小会失去精度!!!
相关文章推荐
- Android之使用Http协议实现文件上传功能
- Silverlight将图片转换为byte的实现代码
- 在VBS中定义字节数组Byte()介绍
- mysql binlog二进制日志详解
- 详解C++编程中对二进制文件的读写操作
- 整理C# 二进制,十进制,十六进制 互转
- c#二进制逆序方法详解
- JS幻想 读取二进制文件第1/2页
- 使用jscript实现二进制读写脚本代码
- C#二进制序列化实例分析
- JavaScript前端开发之实现二进制读写操作
- PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
- javascript 二进制运算技巧解析
- 如何判断一个整数的二进制中有多少个1
- MSSQL 将截断字符串或二进制数据问题的解决方法
- 二进制中1的个数
- C++ 十进制转换为二进制的实例代码
- C语言十进制转二进制代码实例
- asp.net实现图片以二进制流输出的两种方法
- C++二进制翻转实例分析