数字を指定すると、数字のN番目の数字を修正したいと思います。例えばN番目の数字を変更します
、1237645を与えられ、私は私が考えることのできる5
唯一の方法にあると言うために、この場合は7である右から4 番目の数字を変更したいですこれを行う
N = 1237645
fourthDigit = (N/1000) % 10
N -= fourthDigit * 1000 // make fourth digit 0
N += 5 * 1000 // make fourth digit 5
しかし、これは非常に非効率的です。これには良い方法がありますか?メモリの制約のためにNを表現するために配列を使うことはできません。あなたは1回の算術演算でそれを行うことができます
申し訳ありません。それは%10 – Confuse
でした。これは、従来のバイナリ表現の数値でも同様に可能です。バイナリコード10進数(BCD)を使用する場合、これはビット単位のブール演算で非常に迅速に実行できますが、すべての算術演算には余分な命令が必要です。 BCDは1つの10進数を4ビットで格納するため、32ビット整数は+ 9,999,999または99,999,999までの符号なしを表すことができます。興味深いことに、古代8086には長い間サポートされていたBCDをサポートする特別な指示がありましたが、最近のx86バージョンでは廃止され放棄されています。 – Gene
興味深いですね。実際には、私は4桁の数字がshortの配列で表現されているので(これはいくつかのビットが空いているので)、私の場合は効率的なメモリと同じです。私はそれを効率的に実装する方法を学ぶ必要がありますが、現時点ではビットフィールドについてしか考えられないからです。 – Confuse