我是靠谱客的博主 优美睫毛,最近开发中收集的这篇文章主要介绍Byte.toUnsignedInt() +与运算 原码,反码,补码事由,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这里写自定义目录标题

  • 事由
    • 运行结果如下
    • & 与运算
    • **==如何在二进制中表示复数?==**
    • 原码,反码,补码
    • 一颗大栗子
      • over!!!

事由

周五有点无聊没事看书看到了这个注意,然后就想着动手实现一下。

在这里插入图片描述

Byte.toUnsignedInt(c);
int a = Byte.toUnsignedInt((byte) -1);
int b = Byte.toUnsignedInt((byte) -2);
int h = Byte.toUnsignedInt((byte) 1);
System.out.println(a);
System.out.println(b);
System.out.println(c);

运行结果如下


看到结果引起了我的深思 靠! 这么奇怪x值为-1 其值255 ,为1时127。一下没忍住就把它源码扒出来看看。

 public static int toUnsignedInt(byte x) {
return ((int) x) & 0xff;
}
/**
* Converts the argument to a {@code long} by an unsigned
* conversion.
In an unsigned conversion to a {@code long}, the
* high-order 56 bits of the {@code long} are zero and the
* low-order 8 bits are equal to the bits of the {@code byte} argument.
*
* Consequently, zero and positive {@code byte} values are mapped
* to a numerically equal {@code long} value and negative {@code
* byte} values are mapped to a {@code long} value equal to the
* input plus 2<sup>8</sup>.
*
* @param
x the value to convert to an unsigned {@code long}
* @return the argument converted to {@code long} by an unsigned
*
conversion
* @since 1.8
*/

好吧 下面的注释我一个都看不懂但不影响我看代码。
将x强制转化成int 类型再与0xff 进行与运算。
以为就到这了? 其实吧并没有 毕竟我准备水点字。就再扒一下,毕竟我菜鸟的嘛 有太多不会的了

& 与运算

参加运算的两个数据,按二进制位进行“与”运算。
运算规则:两位同时为“1”,结果才为“1”,否则为0

1.举个栗子
例如:1&3即 0000 0001 & 0000 0011 = 0000 0001因此,1&3的值得1。
另,负数按补码形式参加按位与运算。

如何在二进制中表示复数?

好问题!!!! 我也不晓得 毕竟是菜鸟嘛 所以我就去问了问度娘。
概括一下就是: 取其正整数的原码再取反码,反码的补码,就是负整数的二进制
确实有点绕,那看图吧

正整数原码
反码
补码

补码就是负数的二进制

原码,反码,补码

顺手百度不谢不谢
原码:一个整数,按照绝对值大小转换成的二进制数。
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码
补码:反码最右边+1

一颗大栗子

x为-1,其数据类型为Byte 二进制为:
还是算一下吧
1 的原码为 0000 0001
反码为 1111 1110
补码为 1111 1111
int(x) 强制转换 x从一个字节八位变成了 4个字节 32位,高24位填充1
(问为什么填充1 以为其为正数时高位全填充了0 )
‘24个1’ 1111 1111

0xff 为16进制 转换成十进制是 255 二进制 巧了“24个0” 1111 1111
然后与运算
x: 1111 1111
oxff: 1111 1111
结果为
1111 1111 (没错就是它本身255)

over!!!

最后

以上就是优美睫毛为你收集整理的Byte.toUnsignedInt() +与运算 原码,反码,补码事由的全部内容,希望文章能够帮你解决Byte.toUnsignedInt() +与运算 原码,反码,补码事由所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部