负整数的二进制补码是否仅用于加法和减法?

例如,

13的二进制是:00000000 00000000 00000000 00001101。 是将-13存储为10000000 00000000 00000000 00001101(使用最高有效位表示符号)还是使用二进制补码存储-13? (特别是在C中)

如果使用最高有效位表示符号来存储它,那么何时才使用二进制补码?

summaryproject 回答:负整数的二进制补码是否仅用于加法和减法?

C可以根据实现以任何格式存储负数。最受欢迎的(如今几乎没有使用其他系统)是两种称赞格式。

但是您的电话号码不是2个合规电话号码。

-13二进制为0b111111111111111111111111111100100

查看负数的无符号表示:https://godbolt.org/z/ajDDvc

,

Two的恭维是表示数字的一种流行形式,其中二进制范围的一半为负数。它可以用于所有算术运算,而不仅仅是加法和减法。简而言之,以这种方式存储数字“很有意义”。造成这种情况的原因可能是压缩算法,您希望避免使用太多位(例如Zig-zag格式等)。

例如,要将两个8位数字“ 5”和“ -3”相乘,以二进制表示为10111111101,计算机可能会将其分解为问题检查一个因素中的每个位,然后将按每个位集移动的另一个因素相加:

  5<<0
+ 5<<2 (skipping 5<<1,because that bit is not set)
+ 5<<3
+ 5<<4
+ 5<<5
+ 5<<6
+ 5<<7
------
  1265 

1265在8位空间中包装到241,该空间为二进制11110001,是-15的二进制补码。在某些较旧的计算机上,乘以一个数字的位数需要更长的时间,这可能是由于需要额外的算术。

除法变得有些棘手,并且是最昂贵的算术运算,但是这里的本质是,二进制补码是一种存储数字的方法,计算机可以轻松使用它,因为不需要额外的逻辑来测试在执行大多数操作之前先对符号位进行标记。

换句话说,“ no”不仅用于加法和减法。

本文链接:https://www.f2er.com/2605048.html

大家都在问