Java 无符号 - 删除符号位

标签 java converters unsigned unsigned-integer

我有这个功能:

public static final int UNSIGN(short b){

    return (b & 0xFFFF);
}

这里的目的是使用“b”中的值,就好像它是正数一样,我的意思是,就好像它是一个无符号整数,能够容纳 65536 个值。然而,这不起作用。例如:

如果“b == -122”,函数返回“65414”。

我也尝试过这种方法:

public static final int UNSIGN(short b){

    return (b & 0xFF);
}

但是如果“b == 304”,那将返回“48”。

我真的很迷茫,希望有人能帮忙。

最佳答案

The intent here is to use the value in 'b' as if it were positive.

您的意思是要求 b 的绝对值吗?那将是 Math.abs .

但是您的代码b视为无符号短整型。当b为-122时,位将为

1111111110000110

...当视为无符号值时,其值为 65414。

(122 是 0000000001111010,因此要对其取反,请将值减 1 并翻转所有位。)

关于Java 无符号 - 删除符号位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14552424/

相关文章:

java - 嵌套 SQL 语句或 View ?什么是理想的?

C# 将 csv 转换为 xls(使用现有的 csv 文件)

java - 将 GIF 图像转换为 PNG 格式,32 位深度

c - 如何从无符号字符编辑单个位

java - 在特定情况下,Hibernate 不会从带有子对象的集合中删除对象

用于提取货币短语的 Java 正则表达式

java - 使用 Java 批量上传到 Box*

c++ - 在不使用 if 语句、字符数组、apstrings 或 atoi 的情况下,如何将具有两位数字的字符串转换为 int?

c - 有符号整数和无符号整数是一一对应的吗?

java - Java中的无符号短