修改第N个数字

时间:2016-12-11 04:27:08

标签: c math

给定一个数字,我想修改数字的第N位数。

例如,给定1237645,我想从右边改变4 th 数字,在这种情况下是7,比如5。

我能想到的唯一方法就是这样做

N = 1237645
fourthDigit = (N / 1000) % 10    
N -= fourthDigit * 1000       // make fourth digit 0
N += 5 * 1000                 // make fourth digit 5

但这是非常低效的。有更好的方法吗?由于内存限制,我不能使用数组来表示N.

2 个答案:

答案 0 :(得分:1)

您可以在一个算术运算中执行此操作:

N = 1237645
fourthDigit = (N / 1000) % 10    
N -= (fourthDigit-5) * 1000

提供fourthDigit> = 5,否则最后一行变为

N += (newDigit-fourthDigit)*1000 

答案 1 :(得分:1)

这是嵌入式系统编程吗? 如果是,则尝试将数字存储为二进制编码的十进制(BCD),然后在需要时转换为二进制。从另一种方式来看,从BCD转换为二进制可能更容易。 另请参阅:http://homepage.divms.uiowa.edu/~jones/bcd/bcd.html

顺便说一句,就在这里和我在一起的房间是一个时钟,可以保持BCD的时间。这样,它不必除以10来显示。