模拟计算机计算源码、反码、补码(难度系数:1颗星)
来源:互联网 发布:二维码生成软件设备 编辑:程序博客网 时间:2024/06/06 03:20
题目描述:
输入一个整数,输出对应的源码、反码和补码(用32位来表示)
参考代码:
#include <stdio.h>int arrNum[33]; //用来保存转换后的二进制,用32位表示,全局变量所有数组元素已经初始化为0了void Print(){//输出此刻的二进制,为了方便运算,之前是倒过来存储的 for (int i = 31; i >= 0; i--) printf("%d", arrNum[i]); printf("\n");}int main(){ int studentNumber, i, index = 0, temp; scanf_s("%d", &studentNumber); temp = studentNumber < 0 ? -studentNumber : studentNumber; while (temp) //把整数转换成二进制存放在数组中 { arrNum[index++] = temp % 2; temp /= 2; } if (studentNumber >= 0)//如果是正数,原码,反码,补码是一致的 { printf("原码为:\n"); Print();//输出原码 printf("反码为:\n"); Print();//输出反码 printf("补码为:\n"); Print();//输出补码 } else { arrNum[31] = 1;//为了方便计算,反过来存储,如果输入为负数,对应的最高位符号位是31位,设置为1 printf("原码为:\n"); Print();//输出原码 for (i = 0; i < 31; i++) arrNum[i] = 1 - arrNum[i]; //除了符号位以外,全部取反 printf("反码为:\n"); Print();//输出反码 arrNum[0] += 1;//反码加一,求出补码 for (i = 0; i <= 31; i++)//进位操作 if (arrNum[i] >= 2) { arrNum[i + 1] += arrNum[i] / 2; arrNum[i] %= 2; } printf("补码为:\n"); Print();//输出补码 } return 0;}
输出结果:
3 0
- 模拟计算机计算源码、反码、补码(难度系数:1颗星)
- 计算机源码,补码,反码
- 计算机中的源码 反码 补码
- 计算机数据表示 源码、反码、补码、移码
- 迭代法计算平方根(难度系数:2颗星)
- 源码 补码 反码(转)
- 计算机基础【1】原码、反码、补码。
- 计算机中二进制原码、反码、补码的计算
- 计算机为什么选用二进制补码(1)---原码、反码、补码
- 源码 、补码、 反码的详解(转载)
- 源码/反码/补码 (转)
- 源码 反码 补码
- 源码 补码 反码
- 源码,反码,补码
- 源码 补码 反码
- 源码,反码,补码
- 源码、反码、补码详解
- 源码,反码,补码
- ZOJ 3963 Heap Partition(贪心)
- 题目1366:栈的压入、弹出序列
- php系统函数
- CSS三类写法
- 欢迎使用CSDN-markdown编辑器
- 模拟计算机计算源码、反码、补码(难度系数:1颗星)
- ZOJ 3960 What Kind of Friends Are You?(哈希)
- SpringBoot实战 之 入门篇
- 【笔记】formvalidtor中的ajaxValidator用法
- React-Native Fetch使用Promise封装(一)
- 题目1367:二叉搜索树的后序遍历序列
- linux上的mysql从5.5升级到5.6
- 栈的压入、弹出序列
- 【Summary】——>Web组·Week3