Java从头再来的教程

**5. byte的注意**
```java
/*
	* Author:CF.FC
	* Time:2022.10.13
	* Signature:Perfection doesn't happen overnight
*/
public class Byte{
	public static void main(String[] args){
		
		// 给byte的数据大小不能超过它所表示范围,否则自动转换为int整数型进行操作,并且发生精度损失
		byte num1 = (byte)128;
		byte num2 = (byte)-129;
		int num3 = 128;
		int num4 = -129;
		System.out.println("128超过了byte字节型整数表示的最大值所以会自动变成默认的int,而预先给的变量数据类型为byte因此报错,若要解决可加上强制类型转换即(byte),转换后的结果为" + num1);  // -128
		System.out.println("-129超过了byte字节型整数表示的最小值所以会自动变成默认的int,而预先给的变量数据类型为byte因此报错,若要解决可加上强制类型转换即(byte),转换后的结果为" + num2);  // 127
		System.out.println("这个" + num3 + "超过了byte字节型整数表示的最大值所以输入的数字为默认的int,而预先给的变量数据类型为byte因此报错,所以要将之前的byte改为int才会正常执行代码,正常执行后的结果为128"); // -128
		System.out.println("这个" + num4 + "超过了byte字节型整数表示的最小值所以输入的数字为默认的int,而预先给的变量数据类型为byte因此报错,所以要将之前的byte改为int才会正常执行代码,正常执行后的结果为-129"); // -129
		
		// byte两个数字相除时,小数点后小于1的小数都会自动转换为0即向下取整,例如:2/3(0.6666666666666667)->0,4/3(1.333333333333333)->1
		byte num5 = 2/3;
		byte num6 = 4/3;
		System.out.println("三分之二计算出来后是0.6的死循环,因为小数点后的小数小于1,所以向下取整为" + num5); // 0
		System.out.println("三分之四计算出来后是1.3的死循环,因为小数点后的小数小于1,所以向下取整为" + num6); // 1
	}
}

6. byte的存储

负数的原码及补码变化(从小到大的顺序)
-128									
原码:无								
反码:无							
补码:0B1000,0000	
-127	
原码:0B1111,1111
反码:0B1000,0000
补码:0B1000,0001
-126
原码:0B1111,1110
反码:0B1000,0001
补码:0B1000,0010
-125
原码:0B1111,1101
反码:0B1000,0010
补码:0B1000,0011
-1
原码:0B1000,0001
反码:0B1111,1110
补码:0B1111,1111

正数的原码及补码变化(从小到大的顺序)
0
原码:0B0000,0000
反码:0B0000,0000
补码:0B0000,0000
1
原码:0B0000,0001
反码:0B0000,0001
补码:0B0000,0001
2
原码:0B0000,0010
反码:0B0000,0010
补码:0B0000,0010
3
原码:0B0000,0011
反码:0B0000,0011
补码:0B0000,0011
127
原码:0B0111,1111
反码:0B0111,1111
补码:0B0111,1111

byte数据大小越界后的最大值精度损失(128->-128)

原数128(大于byte最大值即127)
原码:0,1000,0000
反码:0,0111,1111
补码:0,1000,0000

转换后的数-128(精度损失--损失最左边的一个位即损失符号位)
原码:无
反码:无
补码:0,1000,0000->1000,0000

byte数据大小越界后的最小值精度损失(-129->127)

原数-129(小于byte最小值即-128)
原码:1,0111,1111
反码:1,1000,0000
补码:1,1000,0001

转换后的数127(精度损失--损失最左边的一个位即损失符号位)
原码:1,1111,1111->0111,1111
反码:0111,1111
补码:0111,1111

备注:
1. 正数原码、反码、补码相同(三码合一)
2. 负数补码 = 反码最低位 + 1,负数的反码 = 原码除符号位不变外其余每一位的数字都置反
3. 原码、反码、补码的最左边的位是最高位也是符号位(0代表正1代表负),最右边的位是最低位
4. 若要推到数字如何在计算机中进行存储从原码出发,若要拿出计算机的数字进行使用从补码出发
5. 计算机中都是以补码进行数字的存储,因为有了补码的存在才使得负数也能像正数一样存储在计算机中

总结:
6. 负数的原码变化
0B1111,1111->0B1000,0001(即从大到小)
7. 负数的补码变化
0B1000,0000->0B1111,1111(即从小到大)
8. 正数的原码变化
0B0000,0000->0B0111,1111(即从小到大)
9. 正数的原码变化
0B0000,0000->0B0111,1111(即从小到大)
10. 取值超过byte取值范围后的变化
取值超过byte取值范围后,会发生精度损失即损失掉符号位

7. byte的代码

/*
	* Author:CF.FC
	* Time:2022.10.13
	* Signature:Perfection doesn't happen overnight
*/
public class Byte{
	public static void main(String[] args){
		
		// 整数取值范围(-128~127)
	    byte num1 = 0;
		byte num2 = 127;
		byte num3 = -128;
		
		// 字符(符合ASCII码表即0~127) 
		byte num4 = 65;
		byte num5 = 90;
		byte num6 = 97;
		byte num7 = 122;

		// 整数算术表达式(加减乘除)
		byte num8 = 1+2;
		byte num9 = 1-2;
		byte num10 = 1*2;
		byte num11 = 1/2;

		// 字符算术表达式(加减乘除)
		byte num12 = '1' + '1';
		byte num13 = '1' - '1';
		byte num14 = '1' * ('1' - '1');
		byte num15 = '1' / '1';

	    // 字符和数字混合算术表达式(加减乘除)
		byte num16 = 'a' + 26;
		byte num17 = 'Z' - 26;
		byte num18 = 'z'*1;
		byte num19 = 'A'/1;
		
 		// 整数取值范围(-128~127)二进制(0b|0000,0000或0B|0000,0000)
		byte num20 = 0b01111111;
		byte num21 = 0b00000000;
		byte num22 = -0B10000000;
		
		// 整数取值范围(-128~127)八进制(00|000)
		byte num23 = 00177;
		byte num24 = 00000;
		byte num25 = -00200;
		
		// 整数取值范围(-128~127)十六进制(0x|0000或0X|0000)
		byte num26 = 0x7F;
		byte num27 = 0x0000;
		byte num28 = -0X0080;

	    // 整数取值范围(-128~127)二进制(0b|0000,0000或0B|0000,0000)算术表达式(加减乘除)
		byte num29 = 0b01111111 + 0b00000000 + -0B10000000;
		byte num30 = 0b01111111 - 0b00000000;
		byte num31 = 0b01111111 * 0b00000000 * -0B10000000;
		byte num32 = 0b01111111 / -0B10000000;
		
		// 整数取值范围(-128~127)八进制(00|000)算术表达式(加减乘除)
		byte num33 = 00177 + 00000 + -00200;
		byte num34 = 00177 - 00000;
		byte num35 = 00177 * 00000 * -00200;
		byte num36 = 00177 / -00200;
		
		// 整数取值范围(-128~127)十六进制(0x|0000或0X|0000)算术表达式(加减乘除)
		byte num37 = 0x7F + 0x0000 + -0X0080;
		byte num38 = 0x7F - 0x0000;
		byte num39 = 0x7F * 0x0000 * -0X0080;
		byte num40 = 0x7F / -0X0080;

		// 整数取值范围(-128~127)输出
		System.out.println("");
		System.out.println("=整数取值范围(-128~127)输出=");
		System.out.println("num1:" + num1); // 0
		System.out.println("num2:" + num2); // 127
		System.out.println("num3:" + num3); // -128
		
		// 字符(符合ASCII码表即0~127)输出
		System.out.println("");
		System.out.println("==字符(符合ASCII码表即0~127)输出==");
		System.out.println("num4:" + num4); // 65
		System.out.println("num5:" + num5); // 90
		System.out.println("num6:" + num6); // 97
		System.out.println("num7:" + num7); // 122

	   	 // 整数算术表达式(加减乘除)输出
	    System.out.println("");
		System.out.println("===整数算术表达式(加减乘除)输出===");
		System.out.println("num8:" + num8);   // 3
		System.out.println("num9:" + num9);   // -1
		System.out.println("num10:" + num10); // 2
		System.out.println("num11:" + num11); // 0

		// 字符算术表达式(加减乘除)输出
 		System.out.println("");
		System.out.println("====字符算术表达式(加减乘除)输出====");
		System.out.println("num12:" + num12); // 98
		System.out.println("num13:" + num13); // 0
		System.out.println("num14:" + num14); // 0
		System.out.println("num15:" + num15); // 1

	    // 字符和数字混合算术表达式(加减乘除)输出
	   	System.out.println("");
		System.out.println("=====字符和数字混合算术表达式(加减乘除)输出=====");
		System.out.println("num16:" + num16); // 123
		System.out.println("num17:" + num17); // 64
		System.out.println("num18:" + num18); // 122
		System.out.println("num19:" + num19); // 65
		
	    // 整数取值范围(-128~127)二进制(0b|0000,0000或0B|0000,0000)输出
	    System.out.println("");
		System.out.println("======整数取值范围(-128~127)二进制(0b|0000,0000或0B|0000,0000)输出======");
		System.out.println("num20:" + num20); // 127
		System.out.println("num21:" + num21); // 0
		System.out.println("num22:" + num22); // -128

   	    // 整数取值范围(-128~127)八进制(00|000)输出
   	    System.out.println("");
		System.out.println("=======整数取值范围(-128~127)八进制(00|000)输出=======");
		System.out.println("num23:" + num23); // 127
		System.out.println("num24:" + num24); // 0
		System.out.println("num25:" + num25); // -128

		// 整数取值范围(-128~127)十六进制(0x|0000或0X|0000)输出
		System.out.println("");
		System.out.println("========整数取值范围(-128~127)十六进制(0x|0000或0X|0000)输出========");
		System.out.println("num26:" + num26); // 127
		System.out.println("num27:" + num27); // 0
		System.out.println("num28:" + num28); // -128
		
 		// 整数取值范围(-128~127)二进制(0b|0000,0000)算术表达式(加减乘除)输出
 		System.out.println("");
		System.out.println("=========整数取值范围(-128~127)二进制(0b|0000,0000)算术表达式(加减乘除)输出=========");
		System.out.println("num29:" + num29); // -1
		System.out.println("num30:" + num30); // 127
		System.out.println("num31:" + num31); // 0
		System.out.println("num32:" + num32); // 0
		
		// 整数取值范围(-128~127)八进制(00|000)算术表达式(加减乘除)输出
		System.out.println("");
		System.out.println("==========整数取值范围(-128~127)八进制(00|000)算术表达式(加减乘除)输出==========");
		System.out.println("num33:" + num33); // -1
		System.out.println("num34:" + num34); // 127
		System.out.println("num35:" + num35); // 0
		System.out.println("num36:" + num36); // 0
		
	    // 整数取值范围(-128~127)十六进制(0x|0000或0X|0000)算术表达式(加减乘除)输出
	    System.out.println("");
		System.out.println("===========整数取值范围(-128~127)十六进制(0x|0000或0X|0000)算术表达式(加减乘除)输出===========");
	    System.out.println("num37:" + num37); // -1
		System.out.println("num38:" + num38); // 127
		System.out.println("num39:" + num39); // 0
		System.out.println("num40:" + num40); // 0
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过往已是曾经

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值