如何使用链表将负十进制数转换为二进制?
How to convert a negative decimal number to binary using linked list?
我想使用 2 的补码将负数转换为二进制,但我无法为其提供正确的逻辑。如何使用链表将负十进制数转换为二进制?
我的一个朋友说这是签名位或类似问题
我是初学者,找不到解决方案。我已经搜索了所有网络,但一无所获。
struct node {
long data;
node* next;
}* head,* tail;
int main(int argc, char** argv) {
head = NULL;
tail = NULL;
long dec;
cout << "Enter the decimal number" << endl;
cin >> dec;
div(dec);
dis();
singlecomp();
dis();
return 0;
}
void div(long num) {
while (num != 0) {
createNode(num % 2);
num /= 2;
}
}
void createNode(long val) {
node* temp = new node;
temp->data = val;
temp->next = NULL;
if (head == NULL) {
head = tail = temp;
} else {
temp->next = head;
head = temp;
}
}
void dis() {
node* cur = new node;
cur = head;
while (cur != NULL) {
cout << cur->data << " ";
cur = cur->next;
}
}
void singlecomp() {
node* now = new node;
now = head;
cout << endl;
while (now != NULL) {
if (now->data == 0) {
now->data = 1;
} else {
now->data = 0;
}
now = now->next;
}
}
-
从 C++11 开始,负值的除法被指定为向零截断。在此之前,舍入的方向是实现定义的,理论上你的代码在某些平台上可能会导致无限循环。
-
对于当前的行为标准,C++允许负数的 3 种表示:
- 符号量级
- 一个人的补语
- 二的补码
你的代码实现了 one 的补码,而绝大多数计算平台(几乎我所知道的(都使用 two 的补码。
-
C++长型类型通常为 32 位或 64 位。您需要向补充值添加足够的前导值,以填充当前算法未填充的位,因为它在达到值 0 时停止,而不是枚举所有 32 或 64 位。
-
在给定平台上生成有符号长整型的二进制表示的最简单方法是先将其转换为无符号长整型,然后在无符号值上使用除法/余数(或移位/按位-和(。
相关文章:
- visual在c++中将十进制数转换为二进制数
- C++十进制到二进制,如何转换
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- C++从二进制转换为十进制数
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- 我编写了代码将十进制分数转换为其二进制等效数.它编译得很好,但在执行时挂起
- C2678 二进制 '==':未找到采用 'Card' 类型左操作数的运算符(或者没有可接受的转换)
- 如何在 O(n) 中将二进制和转换为二进制
- 我写的 ASCII 到二进制转换器C++向后显示二进制,如何使其正确显示?
- 十进制到二进制转换器 c++
- 在C++中将结构转换和存储为二进制
- 从二进制流中读取时,将双精度变量的地址转换为 char* 意味着什么?
- 如何在C ++中将二进制字符串128位转换为十进制字符串?
- 如何将二进制文件头示例代码 (C++/C#) 转换为 Python?
- 二进制 '==':未找到采用 'Enemy' 类型左侧操作数的运算符(或者没有可接受的转换)
- 将二进制转换为十进制,我如何要求用户仅输入二进制
- QTextStream的操作数到二进制的转换无效
- 在c++中读取和转换二进制数据
- c++转换二进制到十进制从字符串输入
- 计算器转换二进制到浮点值-我做错了什么