用 c++实现NAF转化为DAF子集法
时间: 2024-02-20 16:57:12 浏览: 37
下面是一个C++的实现,实现NAF转化为DAF子集法:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void nafToBinary(int n, vector<int>& binary) {
while (n > 0) {
binary.push_back(n % 2);
n = n / 2;
}
}
void nafToDaf(vector<int>& binary, vector<int>& daf) {
int i = 0;
while (i < binary.size()) {
int sum = 0;
int k = 1;
for (int j = 0; j < 4 && i < binary.size(); j++, i++) {
sum += binary[i] * k;
k *= 2;
}
daf.push_back(sum);
}
}
void printVector(vector<int>& v) {
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
cout << endl;
}
int main() {
int n = -27;
vector<int> binary, daf;
nafToBinary(n, binary);
nafToDaf(binary, daf);
reverse(daf.begin(), daf.end());
printVector(daf);
return 0;
}
```
输入一个整数n(此处为-27),然后将其转化为NAF表示法的二进制形式,再将二进制形式按照4位一组进行分组,最后转化为DAF格式。
输出结果为:9 7 0 1。
注意,由于DAF编码是从低位到高位存储的,因此需要将转化后的结果进行翻转,才能得到正确的编码。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)