计算 ISBN 的校验位

发布于 2024-09-19 01:28:59 字数 250 浏览 7 评论 0原文

这实际上不是家庭作业,我只是在下周开始计算机科学之前浏览一本离散数学书中的一些问题。

不管怎样,其中一个问题要求我编写一个程序来执行这个算法(它解释了)。我所困惑的部分是如何获取 9 位数字并将其“拆分”为单个整数,以便可以对每个数字执行计算。

我想把这个数字除以 100,000,000,然后取它的整数值来得到第一个数字,但我不知道如何得到其他数字。

如果这是在 PHP 或其他东西中,我可以使用explode(),但我想这不是重点:P

This isn't actually homework, I'm just looking through some questions in a discrete maths book before I start computer science next week.

Anyway, one of the questions asks me to write a program to perform this algorithm (which it explains). The part I'm stuck with is how to take the 9 digit number and "split" it into single integers, so the calculations can be performed on each digit.

I thought of dividing the number by 100,000,000 and then taking the integer value of this to get the first digit, but I'm not sure how to get the others.

If this was in PHP or something I could just use explode(), but I guess that's not the point here :P

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

睡美人的小仙女 2024-09-26 01:29:04

使用模运算:

a % 10 to get the last digit
a % 100 to get the last two digits. (a % 100) - (a % 10) to get the second last number
etc.

use the modulo operation:

a % 10 to get the last digit
a % 100 to get the last two digits. (a % 100) - (a % 10) to get the second last number
etc.
草莓味的萝莉 2024-09-26 01:29:03

除以 100,000,000 并获取整数值后,您可以将该整数值乘以 100,000,000,然后从 ISBN 中减去它。这实际上只是去掉了最左边的数字。现在,重复 10,000,000 - 等等。

5 位数字示例:

Start: 74325

74325/10000 and int = 7 (there's your first digit)
7 * 10000 = 70000
74325 - 70000 = 4325

4325/1000 and int = 4 (there's your next digit)
4 * 1000 = 4000
4325 - 4000 = 325

等等!

Once you've divided by 100,000,000 and taken the integer value, you can then multiply this integer value back by 100,000,000 and subtract it from the ISBN. That effectively just takes off the left-most digit. So now, repeat with 10,000,000 - and so on.

Example with 5 digits:

Start: 74325

74325/10000 and int = 7 (there's your first digit)
7 * 10000 = 70000
74325 - 70000 = 4325

4325/1000 and int = 4 (there's your next digit)
4 * 1000 = 4000
4325 - 4000 = 325

and so on!

眼藏柔 2024-09-26 01:29:01

您可以使用 mod(%) 和 除(/) 运算符。

N%10 将为您提供最后一位数字。
N/10(整数除法)将删除最后一位数字。

您可以继续,直到没有更多的数字为止。

You can use the mod(%) and divide(/) operator.

N%10 would give you the last digit.
N/10 (integer division) will remove the last digit.

You can continue till you have no more digits.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文