相关疑难解决方法(0)

什么是"2的补充"?

我在计算机系统课程中,并且一直在与Two's Complement一起挣扎.我想了解它,但我读过的所有内容并没有为我提供图片.我已经阅读了维基百科文章和其他各种文章,包括我的教科书.

因此,我想开始这个社区wiki帖子来定义Two's Complement是什么,如何使用它以及它如何在诸如强制转换(从有符号到无符号,反之亦然)等操作中影响数字,逐位操作和位移操作.

我所希望的是一个清晰简洁的定义,程序员很容易理解.

binary computer-science bit-manipulation twos-complement data-representation

410
推荐指数
7
解决办法
40万
查看次数

为什么对签名数字更喜欢两个补码而不是符号和数量?

我只是好奇是否有一个理由为了在二进制中表示-1,使用二进制补码:翻转位并加1?

-1表示为11111111(二进制补码)而不是(对我来说更直观)10000001,它是二进制1,第一位作为负标志.

免责声明:我不依赖二进制算术来完成我的工作!

math binary negative-number internal-representation twos-complement

196
推荐指数
8
解决办法
8万
查看次数

Java和0xff的值是什么?

我有以下Java代码:

byte value = 0xfe; // corresponds to -2 (signed) and 254 (unsigned)
int result = value & 0xff;
Run Code Online (Sandbox Code Playgroud)

打印时结果是254,但我不知道这段代码是如何工作的.如果&运算符只是按位,那么为什么它不会产生一个字节而是一个整数呢?

java byte integer bitwise-and

91
推荐指数
3
解决办法
10万
查看次数

两个补码表示正数是否相同?

二进制补码表示正数是否与二进制表示相同?

binary complement

11
推荐指数
4
解决办法
6万
查看次数

将无符号字节转换为有符号字节

有没有一种简单而优雅的方法可以将无符号字节值转换为java中的有符号字节值?例如,如果我只有int值240(二进制(24位+ 11110000)= 32位),我怎样才能得到这个int的有符号值?

java unsigned signed byte

9
推荐指数
4
解决办法
3万
查看次数

将int转换为float并返回不提供初始值

-46当我们将浮点数转换为int时,此代码会打印出来,

这是因为在从int类型到float类型的转换过程中,信息丢失了。

int i = 1_234_567_890;
float f = i;
System.out.println(i - (int)f);   //print  -46
System.out.println(i - f);        //print 0.0
Run Code Online (Sandbox Code Playgroud)

在使用float和double时如何知道精度损失?

在测试之前分析代码时如何知道结果?

java

5
推荐指数
1
解决办法
102
查看次数

为什么Java中这两个不同的整数表示(dec与十六进制)不同?

假设我有两个整数,一个是十进制的,另一个是十六进制的:

int myInt01 = 0xc7d23020;
int myInt02 = 3352440864;
Run Code Online (Sandbox Code Playgroud)

两者都是相同的数字,但是当我尝试将十进制整数分配给Java中的变量时,我得到错误:

error: integer number too large: 3352440864
Run Code Online (Sandbox Code Playgroud)

但是当我将十六进制整数分配给Java中的变量时,一切都按预期工作.

为什么会这样?

java hex decimal

2
推荐指数
1
解决办法
272
查看次数

为什么double总是8个字节而int总是4个字节,即使int有更多数字?

我不明白int 63823是如何占用更少的空间而不是双1.0.在这个特定的实例中,是否没有更多信息存储在int中?

java double int byte

0
推荐指数
1
解决办法
1552
查看次数