二进制数如何求和

JavaScript08

二进制数如何求和,第1张

所需工具:笔、纸。

具体计算步骤如下:

1、先把两个数对齐,和十进制计算时候第一步一样。

2、从最右边对齐的上下两个数开始。

3、1+0=1,0+0=0。如果两个数不是都是1,那么直接相加就好,直接写在下面。

4、1+1=10,把1写上面,把0写下面。

5、1 +1 +1 = 11,要注意进位。

6、依次类推,计算完成。

算法实现:

unsigned short ip_fast_csum(unsigned char * iph,

    unsigned int ihl)

  {

  unsigned int sum

     __asm__ __volatile__(

      "movl (%1), %0 \n"

      "subl , %2 \n"

      "jbe 2f \n"

      "addl 4(%1), %0 \n"

      "adcl 8(%1), %0 \n"

      "adcl 12(%1), %0 \n"

  "1:     adcl 16(%1), %0 \n"

      "lea 4(%1), %1 \n"

      "decl %2 \n"

      "jne 1b \n"

      "adcl , %0 \n"

      "movl %0, %2 \n"

      "shrl , %0 \n"

      "addw %w2, %w0 \n"

      "adcl , %0 \n"

      "notl %0 \n"

  "2: \n"

     : "=r" (sum), "=r" (iph), "=r" (ihl)

  : "1" (iph), "2" (ihl)

  : "memory")

  return(sum)

  } 

扩展资料

二进制反码求和工作原理 :

0和0相加是0,但要产生一个进位1,0和1相加是1,1和1相加是0.若最高位相加后产生进位,则最后得到的结果要加1。

(0)反 + (0)反 = 1 + 1 = 10

(1)反 +(0)反=0+ 1 =1

(1)反 + (1)反 = 0 + 0 = 0