c - C中数字的位移
问题描述
我必须将 C 中的 Long 类型的数字转换为每个 4 位的 BCD(二进制编码的十进制)数字。我只能使用按位移位和位操作。任何人都可以帮助我实现这一目标。目前我不知道如何达到我的目标。
unsigned long convertBinaryToBCD(unsigned long number){
int number_t_conv = number;
int num_digit = 0;
int count_digits = countNumberDigits(number);
for(num_digit = 0; num_digit <= count_digits; num_digit++){
}
return (((number_t_conv/100) << 8) | ((number_t_conv/10) << 4) | (number_t_conv % 10));
};
解决方案
- 在
long
C 程序的内存中将是原始二进制,因此第一步是将其拆分为十进制格式的数字。 - 这是通过重复将数字除以 10 并获取余数来完成的。数字的 LS 数字始终是
n % 10
,当你这样做时,n / 10
你将十进制数字向右“移动”一位。 - 一旦你有一个数字数组,将其打印为 BCD 是微不足道的 - 它只是以字符串格式打印一个二进制数。
从编写上面的程序开始,一旦你让它工作,试着用你老师提出的任何人为的废话要求来达到同样的效果。
推荐阅读
- c# - 按 OR 条件分组的有效方法
- javascript - 从 C# 到 Javascript 的 HMAC256 返回不同的结果
- python - 使用 python selenium 从 iframe 内的列表中选择元素
- python - 从 Discord-Client 读取消息不会触发事件
- firebase - 每次我从 Firebase Cloud Messaging 发送通知时,我的应用程序都会崩溃
- amazon-web-services - 从 s3 存储桶恢复到 sql server 出现错误 数据库备份/恢复选项未启用
- javascript - 动态创建的时间选择器字段未触发事件
- python-3.x - 需要有关在 PyTorch 中迁移学习更快的 RCNN ResNet50FPN 的帮助
- session - 生成 20000 个令牌后未显示 ZAP 会话分析对话框
- d3.js - 如何确定一个点是否隐藏在 3D 散点图 (Plotly.js) 上?