首页 > 编程语言 >java实验代码1

java实验代码1

时间:2023-09-14 23:57:15浏览次数:34  
标签:java int 代码 System 二进制 实验 println 原码 out

一、阅读相应教材,或者使用互联网搜索引擎,弄清楚反码、补码跟原码这几个概念,然后编写示例程序,对正数、负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看Java中的数是采用上述哪种码表示的。

原码、反码、补码是计算机中对数字的二进制表示方法。

原码:将最高位作为符号位(0表示正,1表示负),其它数字位代表数值本身的绝对值的数字表示方式。

反码:如果是正数,则表示方法和原码一样;如果是负数,符号位不变,其余各位取反,则得到这个数字的反码表示形式。

补码:如果是正数,则表示方法和原码一样;如果是负数,则将数字的反码加上1(相当于将原码数值位取反然后在最低位加1)。

总结:正数的原码、反码、补码完全一样,只有负数需要按照以上规则计算。

在Java中,整数是以二进制补码的形式表示的。正数的补码和原码相同,而负数的补码是通过对其绝对值的原码取反后再加1来得到的。

public class BitManipulationExample {
public static void main(String[] args) {
// 正数和负数的二进制表示
int positiveNumber = 5; // 正数5
int negativeNumber = -5; // 负数-5

System.out.println("正数5的二进制表示:" + Integer.toBinaryString(positiveNumber));
System.out.println("负数-5的二进制表示:" + Integer.toBinaryString(negativeNumber));

// 位操作示例
int a = 12; // 二进制为 1100
int b = 6; // 二进制为 0110

// 与操作(&)
int resultAnd = a & b; // 结果为 0100,即4
System.out.println("a & b = " + resultAnd);

// 或操作(|)
int resultOr = a | b; // 结果为 1110,即14
System.out.println("a | b = " + resultOr);

// 异或操作(^)
int resultXor = a ^ b; // 结果为 1010,即10
System.out.println("a ^ b = " + resultXor);

// 左移操作(<<)
int resultLeftShift = a << 2; // 结果为 110000,即48
System.out.println("a << 2 = " + resultLeftShift);

// 右移操作(>>)
int resultRightShift = a >> 2; // 结果为 11,即3
System.out.println("a >> 2 = " + resultRightShift);

// 无符号右移操作(>>>)
int resultUnsignedRightShift = a >>> 2; // 结果为 11,即3
System.out.println("a >>> 2 = " + resultUnsignedRightShift);
}
}

二、运行以下代码

结果为

在Java中,浮点数的计算可能会产生精度问题,这是由于浮点数的内部表示方式导致的。浮点数使用二进制来表示小数,因此在某些情况下,浮点数的运算结果可能不同于预期。

具体来说

1. `0.05 + 0.01`:
预期结果是 `0.06`,但实际上结果是 `0.060000000000000005`。这是因为 `0.05` 和 `0.01` 的二进制表示无法精确地表示 `0.06`。

2. `1.0 - 0.42`:
预期结果是 `0.58`,但实际上结果是 `0.5800000000000001`。同样,这是由于二进制表示的精度问题。

3. `4.015 * 100`:
预期结果是 `401.5`,但实际上结果是 `401.49999999999994`。这是因为 `4.015` 的二进制表示也无法精确地表示 `401.5`。

4. `123.3 / 100`:
预期结果是 `1.233`,但实际上结果是 `1.2330000000000001`。同样,这是由于二进制表示的精度问题。

要在浮点数计算中获得更精确的结果,通常使用 `BigDecimal` 类。

import java.math.BigDecimal;

public class TestBigDecimal {
public static void main(String args[]) {
BigDecimal num1 = new BigDecimal("0.05");
BigDecimal num2 = new BigDecimal("0.01");

BigDecimal sum = num1.add(num2);
System.out.println("0.05 + 0.01 = " + sum);
}
}

 

标签:java,int,代码,System,二进制,实验,println,原码,out
From: https://www.cnblogs.com/yindantong/p/17703848.html

相关文章

  • Java Lambda表达式应用说明
    Lambda简介Lambda 可定义为一种简洁、可传递的匿名函数,它是推动Java8发布的最重要新特性Lambda 本质上是一个函数,虽然它不属于某个特定的类,但具备参数列表、函数主体、返回类型,甚至能够抛出异常Lambda 是匿名的,它没有具体的函数名称Lambda 允许把函数作为一个方法的参数(函数作......
  • java的jdbc插入的时候,遇到null情况报错问题
    分析原因:在执行SQL时MyBatis会自动通过对象中的属性给SQL中参数赋值,它会自动将Java类型转换成数据库的类型。而一旦传入的是null它就无法准确判断这个类型应该是什么,就有可能将类型转换错误,从而报错。解决办法:参数增加jdbcType标识数据类型。(注意:这时候参数{}前统一用#)<inser......
  • 课后实验题
    1、JAVA的基本运行单位是类还是方法?  基本运行单位为类。 2、类由什么组成?(1)属性 (2)方法 (3)构造器 (4)块 (5)内部类 3、变量的类型,相互之间可以转换吗,浮点数?可以,但是在转换过程中可能会丢失精度或导致溢出。4、String是一个数据类型吗?    不是......
  • 低代码
    低代码开发是一种新兴的软件开发方法,它旨在使开发人员能够更快速地开发应用程序,同时减少编写传统代码所需的时间和工作量。低代码开发平台提供了一系列可视化工具和组件,使开发者无需编写大量的代码,而是通过拖拽和配置来创建应用程序。低代码开发有助于企业加快数字化转型的步伐,使其......
  • Java学习_009_for循环
    循环结构:组成:1.初始化语句:用于表示循环开启时的起始状态,简单说就是循环开始的时候是什么样子;2.条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能够一直执行下去;3.循环体语句:用于表示循环反复执行的内容,简单说就是循环反复执行的事情;4.条件控制语句:用于表示循......
  • Java学习_007_Switch语句
    需求:输入一到七的任意一个数,输出该数字对应的星期数。使用Switch语句:1importjava.util.Scanner;23publicclassMain{4publicstaticvoidmain(String[]args){5Scannersc=newScanner(System.in);6System.out.println("请输入一......
  • java---方法
    方法对一段功能代码进行集中管理,每个同学在某一时刻只做一件事情。单一职责。5.1方法的分类构造方法在创建对象时自动调用成员方法使用对象进行调用静态方法static使用类名进行调用()-->代表的就是方法5.2方法的创建语法:访问修饰符[static]返回值类型方法名([形式参......
  • Java数组遍历
    publicclassbianli{publicstaticvoidmain(String[]args){int[]arr={11,22,33,44,55};printArray(arr);}publicstaticvoidprintArray(int[]arr){System.out.print("[");......
  • Java学习_006_考试奖励
    需求:小明期末考试,小明的爸爸对他说,会根据他不同的期末考试成绩,送他不同的礼物,假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。     奖励:95-100-----山地自行车一辆;  90-94------游乐场游玩一次;80-89----......
  • HBase学习5(HBase java编程:创建项目,创建删除表,数据增删改查)
    1.准备工作1.1创建IDEAMaven项目其中名字为hbase_op,groupid为cn.itcast然后导入pom依赖<repositories><!--代码库--><repository><id>aliyun</id><url>http://maven.aliyun.com/nexus/content/groups/public/</url>&l......