gpt4 book ai didi

Java - Int、Short、Char 二元运算

转载 作者:行者123 更新时间:2023-12-01 18:53:55 26 4
gpt4 key购买 nike

据我目前所知,以下内容是正确的:

  • char 8 位值,例如 0 0 0 0 0 0 0 0
  • 短 16 位值,例如 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  • int 32 位值,例如 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

我知道上面的内容听起来很白痴,但我想描述每一步。

所以我有值 1 和 29,如果我正确的话,它们都是 8 位。

 1: 0 0 0 0 0 0 0 1
29: 0 0 0 1 1 0 0 1

现在由于这些是 8 位,我可以执行以下操作

char ff = (char) 1;
char off = (char) 29;

这就是我讲述的两个值(value)观。

我现在想连接这些值,所以它看起来像1 2 9 二进制表示为: 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1

我目前正在做:

short concat = (short) (ff | off)

但是得到的结果是 29,而二进制应该是 285

32768 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1

0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1

我到底哪里出了问题:(?

-- 更新代码解决方案 --

byte of= (byte) 29;
byte fm1 = (byte) 1;
char ph1 = (char) (fm1<<8 | of);

或者是 短 ph2 = (短) (fm1 <<8 | 的);

两者都是 16 位哪个更好?

System.out.println((int)ph1);

最佳答案

您需要将这些位左移 8 位。

short concat = (short) (ff <<8 | off)

管道是按位或,所以你最终只是将相同的位放在同一个位置,将 1 放在第一个或第二个字符有 1 的位置。

关于Java - Int、Short、Char 二元运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14820569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com