湖北师范大学Java实验三

该文详细介绍了Java编程中涉及的基础知识,包括修复编译错误、分析程序运行结果以及深入理解二进制表示和逻辑运算。通过示例代码解释了二进制转换、位操作符(如取反、左移、右移)及其对负数的影响,以及按位与、或、异或运算的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

实验三  Java语言基础

第一题:

 实验学时 2学时

实验内容

改错并分析程序运行结果

(1) 修改程序中的编译错误

(2) 不运行程序,分析程序的运行结果

(3) 运行程序,验证分析结果是否正确

改错后:

public static void main(String[] args) {

// TODO Auto-generated method stub

int a=2;

int b=-3;

System.out.println("a是否大于b:"+(a>b));

boolean c=a>b;

System.out.println("a是否大于b:"+c);

int d;

d=(a>b)?1:0;

System.out.println("a是否大于b(1:大于,0:不大于):"+d);

char s='A';

d=a+s;

System.out.println(d);

System.out.println((char)d);

s=(char)(s+3);

System.out.println("A后面的第3个字母是:"+s);

}

           

 2. 分析下面程序的运行结果

public static void main(String[] args) {

int a=3;

int b=100;

System.out.println("3的二进制是:"+Integer.toBinaryString(a));

System.out.println("取反:     "+Integer.toBinaryString(~a));

System.out.println("取反+1=:  "+Integer.toBinaryString(~a+1));

System.out.println("-3的二进制是:"+Integer.toBinaryString(-3));

System.out.println("-100的二进制是:"+Integer.toBinaryString(-100));

System.out.println("-100逻辑左移4位是:"+(-100<<4));

System.out.println("-100逻辑左移4位是:"+Integer.toBinaryString(-100<<4));

System.out.println("-100逻辑右移4位是:"+(-100>>4));

System.out.println("-100逻辑右移4位是:"+Integer.toBinaryString(-100>>4));

System.out.println("-100算术右移4位是:"+(-100>>>4));

System.out.println("-100算术右移4:0000"+Integer.toBinaryString(-100>>>4));

System.out.println("-100算术右移4位是: "+Integer.toBinaryString(-100>>>4));

}

分析:Integer.toBinaryString是指Integer类型中的静态方法toBinaryString,这个方法是将十进制转换为二进制输出。

第一个Integer.toBinaryString(a)是输出3的二进制所以为11

第二个是a的取反运算,反码是吧0换成1,1换成0,因此为11111111111111111111111111111100

 第3个是把a的反码加1,因此为11111111111111111111111111111101

 第4个是求-3的二进制为11111111111111111111111111111101

 5个是求-100的二进制为11111111111111111111111110011100

第6个-100逻辑左移4位,最高位缺失4位最低位补4个0,对应的十进制为-1600

第7个是求-1600的二进制

8个-100逻辑右移4位,最低位缺失4位且原二级制最高位为1所以左边补4个1,对应的十进制为-7

9个是求-7的二进制

第10个是算术右移对于的十进制,符号位也要一起右移且左边要补上符号位,因此为268435449

第11个在输出268435449的二进制前加上了0000

第12个输出了268435449的二进制

                           

3. 分析下面程序的运行结果

public class Client {

public static void main(String[] args) {

int a = 20;

int b = -10;

System.out.println("20的二进制是:" + Integer.toBinaryString(a));

System.out.println("-10的二进制是:" + Integer.toBinaryString(b));

System.out.println("a&b的二进制是:" + Integer.toBinaryString(a & b));

System.out.println("a&b的十进制是:" + (a & b));

System.out.println("a|b的二进制是:" + Integer.toBinaryString(a | b));

System.out.println("a|b的十进制是:" + (a | b));

System.out.println("a^b的二进制是:" + Integer.toBinaryString(a ^ b));

System.out.println("a^b的十进制是:" + (a ^ b));

}

}

分析:第一个是要转换为a即20的二进制

       第二个是要转换为b即-10的二进制

第三个是按位与运算符,即如果两个相应的二进制位都为1,则该位的结果值为1,否则为0,所以结果为10100

第四个为10100对应的十进制

第五个是按位或运算符,即如果两个相应的二进制位中只要有一个1,则该位的结果值为1,否则为0,所以结果为11111111111111111111111111110110

第六个为第五个对应的十进制-10

第七个是按位异或运算符,即如果两个相应的二进制位相同,则该位的结果值为0,否则为1,所以结果为11111111111111111111111111100010

第八个为第七个对应的十进制-30

                                               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值