首页 > 其他分享 >32位无符号整数的加法

32位无符号整数的加法

时间:2023-07-20 21:46:48浏览次数:23  
标签:int 32 sum 加法 unsigned 整数 printf 31

使用32个元素的数组代表unsigned int型数字(32 bit)的加法。

 

 1 #include <stdbool.h>
 2 #include <stdio.h>
 3 
 4 unsigned int num1[32];
 5 unsigned int num2[32];
 6 unsigned int sum[33];
 7 
 8 void init(unsigned int a, unsigned int *arr) {
 9   for (int i = 0; i < 32; ++i) {
10     arr[31 - i] = (a & 1);
11     a = a >> 1;
12   }
13 }
14 
15 void add() {
16   int s = 0;
17   int c = 0;
18   for (int i = 0; i < 32; ++i) {
19     s = num1[31 - i] + num2[31 - i] + c;
20     c = s / 2;
21     sum[32 - i] = s % 2;
22     sum[31 - i] = c;  // 数的位次(31-i)和和的进位位次(31-i)相同
23   }
24 }
25 
26 _Bool is_overflow() { return sum[0] == 1; }
27 
28 void print_num(unsigned int *arr) {
29   printf(" ");
30   for (int i = 0; i < 32; ++i) {
31     printf("%u", arr[i]);
32     if ((i + 1) % 8 == 0) {
33       printf(" ");
34     }
35   }
36   printf(".\n");
37 }
38 
39 void print_sum(unsigned int *arr) {
40   for (int i = 0; i < 33; ++i) {
41     printf("%u", arr[i]);
42     if (i > 0 && (i % 8 == 0)) {
43       printf(" ");
44     }
45   }
46   printf(".\n");
47 }
48 
49 int main() {
50   unsigned int a;
51   unsigned int b;
52   scanf("%u %u", &a, &b);
53   init(a, num1);
54   init(b, num2);
55   print_num(num1);
56   print_num(num2);
57 
58   add();
59   print_sum(sum);
60 
61   if (is_overflow()) {
62     printf("error: overflow\n");
63   } else {
64     printf("no overflow\n");
65   }
66   return 0;
67 }

 

标签:int,32,sum,加法,unsigned,整数,printf,31
From: https://www.cnblogs.com/weixicai/p/17569761.html

相关文章

  • AGC032F One Third
    首先先证明几个引理。\(\text{Lemma\#1}\):长度为\(1\)的线段上随机取\(n-1\)个点,将其分成\(n\)段,长度最短段的长度期望为\(\dfrac{1}{n^2}\)。证明:我不知道能不能\(\text{Min-Max}\)容斥,但有更简单的做法。假设最小段长度为\(l_{\min}\),考虑枚举\(x\),计算\(......
  • CF1132G Greedy Subsequences
    简单题。\(i\)向\(i\)后第一个\(j\),\(a_j\)比\(a_i\)大的点连边,不难发现最后形成了一棵森林,并且一个点的父亲\(\text{fa}_i>i\)。题目变成了取\([l,r]\)中的点为起点,向祖先方向走去并且终点编号\(\ler\)的最长链长度。考虑离线,维护从每个点开始的最长链长度\(f_i......
  • 报from PyQt5.QtWidgets import * ImportError: DLL load failed: %1 不是有效的 Win3
    导入时,报fromPyQt5.QtWidgetsimport*ImportError:DLLloadfailed:%1不是有效的Win32application!查了很多资料,发现原来PyQt5安装包也是区分电脑位数的,我的电脑是32位的,装的PyQt5确是64位的,由于我这边用pipinstallPyQt5一直报timeout错误,所以我采用的是去官网直接下......
  • 使用 STM32 测量频率和占空比的几种方法
    这几天在论坛上面解答了好几个询问STM32测量频率的贴子,觉得这种需求还是存在的(示波器、电机控制等等)。而简单搜索了一下论坛,这方面的贴子有但是不全。正好今年参加比赛做过这方面的题目(最后是一等奖嘿嘿),所以把我们当时尝试过的各种方案都列出来,方便以后大家使用,也是作为一个长期在......
  • STM32 F103 高效与入门
     1 入门写法 2高效写法 #defineOS_LED_ONGPIO_SetBits(GPIOA,GPIO_Pin_11)#defineOS_LED_OFF GPIO_ResetBits(GPIOA,GPIO_Pin_11)//(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_11)==SET)?OS_LED_ON:OS_LED_OFF;//(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_11)==SE......
  • python win32com 写入excel
    如何使用Python的win32com库写入Excel作为一名经验丰富的开发者,我可以教会你如何使用Python的win32com库来实现在Excel中写入数据的功能。下面是整个流程的步骤表格:步骤描述1导入所需的库2创建Excel应用程序对象3打开或创建Excel工作簿4选择或创建工作表......
  • python win32com makepy.py
    使用win32com库在Python中操作COM对象COM(ComponentObjectModel)是一种面向组件的软件架构模型,用于实现组件之间的通信和交互。在Windows系统中,许多应用程序和服务都是以COM对象的形式提供的。通过COM,我们可以在Python中与这些应用程序和服务进行交互。在Python中,我们可以使用win......
  • 剑指 Offer 67. 把字符串转换成整数
    题目classSolution{public:intstrToInt(stringstr){if(str.size()==0)return0;#空字符串情况intcur=0;while(str[cur]=='')cur++;#直接从非空字符开始处理booloverflow=false;......
  • STM32中包含的c语言基础知识(2023/7/19)
     关键字为c语言中的应用,表示的范围根据使用的范围不同,也发生了相应的变化,比如char本来是用来表示字符的,现在也可以用来表述数字;int在c中是16位的,在32中表示32位,long和int的长度相同,longlong基本不使用。stdint关键字的库文件给我们提供的,ST文件是以前的库文件用的命名方式,现在......
  • 【dp,建模】AGC032D Rotation Sort
    ProblemLink有一个长为\(n\)的排列\(p\),给定\(A,B\),你每次可以做以下两种操作之一:选取\(l,r\),将\(p[l:r]\)循环右移,代价为\(A\);选取\(l,r\),将\(p[l:r]\)循环左移,代价为\(B\)。求将\(p\)排序所需的最小代价。\(n\le5000\)。技巧:循环移位→插入→实数坐......