课后作业1

1、原码、反码、补码的概念

原码 :最高位是符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制。

反码:正数的反码与原码一致,负数的反码是对原码按位取反,只是最高位(符号位)不变。

补码:正数的补码与原码一致,负数的补码是对原码按位取反加1,符号位不变。

例如 5

原码:0101       

反码:0101

补码:0101

例如 -5

原码:1101

反码:1010

补码:1011

将补码1011  转换为原码

补码:1011

符号位不变,数值位取反:1100

1后得到原码:1101

补码变成原码的方式是:正数的补码与原码一致,负数的补码按位取反加1,符号位不变

反码变成原码的方式是:正数的反码与原码一致,负数的补码按位取反,符号位不变

2、原码、反码、补码 0的问题

4位二进制原码表示0-0=1000   +0=0000

4位二进制反码表示0-0=1111   +0=0000

4位二进制补码表示0-0=0000   +0=0000

3、原码、反码、补码 表示范围

n+1位数字,绝对值最大的原码是  -(2^n - 1)2^n - 1

n+1位数字,绝对值最大的反码是  -(2^n - 1) 2^n - 1

n+1位数字,绝对值最大的补码是  -2^n

例如

原码:

二进制无符号000~111      十进制0~ 7  0 ~ 2^3-1

二进制有符号0000~0111    十进制0~7   0 ~ 2^3-1

二进制有符号1111~1000   十进制-7~0   -(2^3-1) ~ 0

综上所述:4位原码的表示范围: -(2^3 - 1) ~ 2^3-1                   

4位二进制原码表示的范围 1111~0111可以表示15个十进制数字 -(2^3 - 1) ~ 2^3-1

4位二进制反码表示的范围 1000~0111可以表示15个十进制数字 -(2^3 - 1) ~ 2^3-1

4位二进制补码表示的范围 1000~0111 可以表示16个十进制数字 -2^3 ~ 2^3-1

补码:位数一定,绝对值最大的补码是符号位是1,数值位全为0

4位补码数字表示 -8: 1000

4位数字,绝对值最大的原码是  1111 0111  -77   -(2^3-1) 2^3-1

4位数字,绝对值最大的反码是  10000111   -77

4位数字,绝对值最大的补码是  1000   -2^3   -8

动手实验

1:

 

1 public class TestDouble {
2 
3     public static void main(String args[]) {
4         System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));
5         System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));
6         System.out.println("4.015 * 100 = " + (4.015 * 100));
7         System.out.println("123.3 / 100 = " + (123.3 / 100));
8     }
9 }

结果:

1 0.05 + 0.01 = 0.060000000000000005

2 1.0 - 0.42 = 0.5800000000000001

3 4.015 * 100 = 401.49999999999994

4 123.3 / 100 = 1.2329999999999999 

 

 

结论: 使用double类型的数值进行计算, 其结果是不精确的。

2:

1 int X=100;
2         int Y=200;
3         System.out.println("X+Y="+X+Y);
4         System.out.println(X+Y+"=X+Y");

结果

1 X+Y=100200

2 300=X+Y 

 

posted @ 2022-09-12 11:07  旺旺大菠萝  阅读(20)  评论(0编辑  收藏  举报