C中的无符号整数在java中的处理

C中的无符号整数在java中的处理
* 因为java中整数都是有符号的,这意味着java中的整数比C中的无符号整数少一位有效数字,
* 比如:32768用C无符号整数int16表示是正常的,但用java short(占两个字节)表示则变成了负数
* 所以在java中应该找有效数字位数更大的类型来表示
* 比如:无符号int16在取到2个字节之后应该用int表示
* 无符号int32在取到4个字节之后应该用long来表示
*
C中的有符号整数在java可以正常处理

public class ShortOverflow {

    public static void main(String[] args) {
        System.out.println("java中没有无符号整数,所以");
        System.out.println("java中short最大:"+Short.MAX_VALUE);
        System.out.println("其16进制数:"+Integer.toHexString(Short.MAX_VALUE));
        System.out.println("其2进制数:"+Integer.toBinaryString(Short.MAX_VALUE));
        System.out.println("16位最大值:"+0xFFFF);
        System.out.println("===============================");
        show(32769);
    }

    private static void show(int num){
        System.out.println("=============转化演示=============");
        System.out.println("原来:"+num);
        System.out.println("二进制:"+Integer.toBinaryString(num));

        System.out.println("强转short:"+(short)(num));
        if(num>65535){
            System.out.println("该数超过了16位,强转只会保留后16位");
        }
        System.out.println("二进制:"+Integer.toBinaryString((short)(num)));
        System.out.println("强转short后与原int数是否相等:"+((short)(num)==num));
        System.out.println("还原:"+((short)(num) & 0xFFFF));

        System.out.println("强转char:"+(char)(num));
    }
}
时间: 2024-10-15 06:56:02

C中的无符号整数在java中的处理的相关文章

hadoop中Text类 与 java中String类的区别

hadoop 中 的Text类与java中的String类感觉上用法是相似的,但两者在编码格式和访问方式上还是有些差别的,要说明这个问题,首先得了解几个概念: 字符集: 是一个系统支持的所有抽象字符的集合.字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.例如 unicode就是一个字符集,它的目标是涵盖世界上所有国家的文字和符号: 字符编码:是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对.即在符号集

【Java】Java中的Collections类——Java中升级版的数据结构【转】

一般来说课本上的数据结构包括数组.单链表.堆栈.树.图.我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组.二维数组无法完全表达你要表达的东西,而定义一个类Class有太过麻烦,这时候,你可以考虑一下用Java中的Collections类.使用Collections类,必须在文件头声明import java.util.*;   一.动态.有序.可变大小的一维数组Vector与ArrayList Collecti

OC中的@interface和java中的区别以及 @implementation @protocol

java 在java中的interface是‘接口’的意思,而java的类声明用class,即接口用interface声明,类是用class声明,是两个独立的部分. 只有在类声明要实现某个接口时,他们两者才建立了关系,例如: [html] view plaincopyprint? interface AI{ void print(); }; class AC{ }; 这时候,AI和AC是独立存在,AC不会因为没有和AI建立关系而编译错误,将AC做以下修改后,AI才和AC建立了关系,AC必须实现A

【Java】Java中的Collections类——Java中升级版的数据结构

一般来说课本上的数据结构包括数组.单链表.堆栈.树.图.我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组.二维数组无法完全表达你要表达的东西,而定义一个类Class有太过麻烦,这时候,你可以考虑一下用Java中的Collections类.使用Collections类,必须在文件头声明import java.util.*; 一.动态.有序.可变大小的一维数组Vector与ArrayList Collection

C++学习笔记_02 C++中的const和Java中的final关键字的区别

(1)final在java中定义常量,可作用于基本类型或者类类型,若是作用于类类型,则此类类型不能作为父 类被继承,也就是说它的下面不能有子类,这样的类叫做原子类.    C++中的const定义常量 (2)Java中的final如果是对于基本类型,那和C++的const是一样的    但是如果是对对象而言,不同了     (3)final表示这个句柄是不可改变的    final Object obj=(Object)new String("a");    obj=(Object)n

Scala中集合类型与java中集合类型转换

以下为java.util.List  转为 scala 中 Seq的方法: 注意需要导入包 import collection.JavaConverters._ //根据topic获取partition信息 def getPartitionInfo(consumer: KafkaConsumer[_, _], topic: String): Seq[PartitionInfo] = { import collection.JavaConverters._ val partList: Seq[Pa

Android中自定义veiw使用Java中的回调方法

//------------------MainActivity----中---------------------------------- import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.widget.Toast; public class MainActivity extends Activity { p

用生活中的例子解释java中的接口

阅读本文前置条件 需要你掌握接口和抽象类的基本定义与区别. 小例子 抽象类 一说到公司的财务人员,大家都知道他的行政职能是什么. 这个职位就是抽象类.其中那套财政处理流程就是抽象类中具体的方法. 这个抽象类(职位)并不能直接处理财务问题,只是规定了在这个职位上的人应该遵循这套办事流程. 具体类 每个职员都有各自不同的特性,比如工资差异,回家的方式等. 这个人员就是具体的类,继承自这个财务职位,但是有各自差异的方法. 这个具体类(财务人员)是直接处理财务问题,是一个可以产生活动的类(人员).其中哪

Oracle数据库中number类型在java中的使用

1)如果不指定number的长度,或指定长度n>18 id number not null,转换为pojo类时,为java.math.BigDecimal类型 2)如果number的长度在10 <= n <= 18 id number(n) not null,转换为pojo类时,为java.lang.Long类型 3)如果number的长度在1 <= n <= 9 id number(n) not null,转换为pojo类时,为java.lang.Integer类型