Math 是2';两个正数的补加法与普通加法相同吗?

Math 是2';两个正数的补加法与普通加法相同吗?,math,Math,如果我有两个正整数,比如0x1234和0x5678,是0x8765+0xfedc=0x8641,如果“+”表示两个补码相加,mod 2^16?这个问题非常模糊。也就是说: 在位级别上,两个补码相加相当于无符号整数的模加。唯一的区别在于如何解释输入和结果的位模式 这意味着,如果有两个正16位的两个补码,a和b,那么两个补码加(a,b)是: a+b如果(a+b)

如果我有两个正整数,比如0x1234和0x5678,是0x8765+0xfedc=0x8641,如果“+”表示两个补码相加,mod 2^16?

这个问题非常模糊。也就是说:

在位级别上,两个补码相加相当于无符号整数的模加。唯一的区别在于如何解释输入和结果的位模式

这意味着,如果有两个正16位的两个补码,a和b,那么两个补码加(a,b)是:

  • a+b如果(a+b)<2^15
  • a+b-2^16否则

    • 这个问题非常模糊。也就是说:

      在位级别上,两个补码相加相当于无符号整数的模加。唯一的区别在于如何解释输入和结果的位模式

      这意味着,如果有两个正16位的两个补码,a和b,那么两个补码加(a,b)是:

      • a+b如果(a+b)<2^15
      • a+b-2^16否则
      没有“两个正数的补码相加”这样的事情,因为两个补码是存储负数的一种方式:-n存储为~n+1,这相当于2^w-n,其中w是整数类型的宽度

      二的补码是为模2^w算法设计的:(+a)+(-b)表示为a+(2^w-b)=(a-b)+2^w,这在模2^w约化后给出了a-b的正确答案。类似地,(-a)+(-b)表示为(2^w-a)+(2^w-b)=(-a-b)+2*2^w,这将减少到预期的-a-b。

      没有“两个正数的补码相加”这样的事情,因为两个补码是存储负数的一种方式:-n存储为~n+1,这相当于2^w-n,其中w是整数类型的宽度


      二的补码是为模2^w算法设计的:(+a)+(-b)表示为a+(2^w-b)=(a-b)+2^w,这在模2^w约化后给出了a-b的正确答案。类似地,(-a)+(-b)表示为(2^w-a)+(2^w-b)=(-a-b)+2*2^w,这将减少到预期的-a-b.

      什么?没有任何意义,我可以检测到。我不知道前两个数字是关于什么的,最后一个和是真的mod 2^20,而2的补码与之无关。什么?没有任何意义,我可以检测到。我不知道前两个数字是什么,最后一个和是真的mod 2^20,2的补码与之无关。好的,但是没有理由在RC5算法中看到任何负值,那么指令是什么意思?好的,但是没有理由在RC5算法中看到任何负值,那么说明是什么意思呢?