zoukankan      html  css  js  c++  java
  • 获取java byte的无符号数值

    byte a = (byte)234;
    System.out.println(a);

    上面的代码,结果是-22,因为java中byte是有符号的,byte范围是-128~127。

    如果想输出234,该怎么做呢,首先想到的是将a 赋给大一点的类型,如下:

    byte a = (byte)234;
    System.out.println(a);
    		
    int i = a;
    System.out.println(a);

    执行后,还是-22,因为int也是有符号的,所以a赋给i时,a的符号位在i中成为了i的符号位。

    正确方法应该是:

    byte a = (byte)234;
    System.out.println(a);
    		
    int i = a;
    System.out.println(a);
    		
    i = a&0xff;
    System.out.println(i);

    原因是:

    0xff是int,占4个字节,a是byte,占1个字节,进行&操作的细节如下:

        00000000 00000000 00000000 11101010    (a)

    &

       00000000 00000000 11111111 11111111    (i)

    ---------------------------------------------------------------------

    = 00000000 00000000 00000000 11101010

    结果是int,但是符号位是0,说明是正数,最后就是正整数234.

    其实这个方法在C语言中也可以获取有符号char的无符号值,但是C语言中可以直接使用unsigned来转换就可以,比这个方便。



  • 相关阅读:
    小议如何使用APPLY
    SQLServer复制(二)--事务代理作业
    T-SQL—理解CTEs
    jdbc与java.sql
    java设计模式之中介者模式
    fread函数和fwrite函数
    Linux多线程编程(不限Linux)
    poj 3320 技巧/尺取法 map标记
    poj 1260 dp
    HDU 4311 前缀和
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3201292.html
Copyright © 2011-2022 走看看