c++ 原码补码转换程序
作者&投稿:鄞园 (若有异议请与网页底部的电邮联系)
#include int main(){char in[10], out[10];scanf("%s", in);if(strlen(in) 0; i --){if(out[i] == '0'){out[i] = '1';break;}else out[i] = '0';}out[8] = 0;printf("%s
", out);}}
1、首先要知道,换算规则:原码转换为反码:符号位不变,数值位分别“按位取反” 。
2、接着反码转换为原码也是一样,但规则却有不同之处:符号位不变,数值位分别“按位取反”。
3、然后就是,原码转换为补码的规则:符号位不变,数值位按位取反,末位再加1。
4、最后补码转换为原码:符号位不变,数值位按位取反,末位再加1,即补码的补码等于原码。
5、而求补(变补)的换算规则与之前有所差别:符号位和数值位都取反,末位再加1。
“输入的不是二进制数,出错”,判断一次,不就可以了?
居然还判断了三次。
就是对于这个数的每一位数字的操作
撒秆复方: 垃圾太多了.“输入的不是二进制数,出错”,判断一次,不就可以了? 居然还判断了三次.
兴宾区18349456425: c++补码转原码 - ?
撒秆复方: 分两种情况,以八位原码转换为例: 正数(符号位为0的数)补码与原码相同. 负数(符号位为1的数)变为补码时符号位不变,其余各项取反,最后在末尾+1 例如:原码01100110,补码为:01100110 原码11100110,先变反码:10011001,...
兴宾区18349456425: c++编写求一个字节的小数的原码,反码,补码程序 - ?
撒秆复方: 要答案密我.qq:849797221#include "stdafx.h"#include "iostream"#include "cmath"#include "string" using namespace std; typedef struct { char data; char flag; }byte; istream& operator >>(istream & in,byte & data) { string tmp; int i,t=0,m=...
兴宾区18349456425: c++补码运算 - ?
撒秆复方: int a 是带符号数;由编译器的不同,可能是2字节编码(short int)或4字节(long int); 以2字节编码为例来解释一下:10 = 0000 0000 0000 1010B (注1) ; ~是取反码(按位),所以 ~10 = 1111 1111 1111 0101B 于是 ~10+1 = 1111 1111 ...
兴宾区18349456425: VC++编程 编写一个求一个字节的整数和小数的原码反码补码程序?
撒秆复方: void PrintYuanMa(char b ) { //原码 if( b > 0 ) printf("0"); else printf("1"); for(char ch = 0x40 ; 0 != ch ; ch = ch / 2 ) { if( (b & ch) > 0 ) printf("1"); else printf("0"); } } void main() { char data[ ] = {1,2,4,8,16,32,64,-128,3,9,11}; for(int i = 0 ;...
兴宾区18349456425: 十进制转换成二进制补码 C++代码 谢谢 - ?
撒秆复方: #include <iostream>#include <limits.h> void bin(int deg) { int i; unsigned int mask = 1 << CHAR_BIT*sizeof(int)-1; for (i = 1; i <= sizeof(int)*CHAR_BIT; i++) { putchar(deg&mask ? '1' : '0'); if (i % 8 == 0) { putchar(' '); } mask >>= 1; } } int main(int argc, char* argv[]) { bin(-2); system("pause"); return 0; }
兴宾区18349456425: 用c++做进制转换的程序,对于负数部分要用不同于正整数的方法吗? - ?
撒秆复方: 负数是以补码形式表示的.举例10to2 输入-47 一、变成47;二、二进制原码表示00101111;三、反码:11010000;四、补码:11010001;输出补码;转进制的思路,就是找转换规则啊!这要找基础书或百度了.小数和负数在进制转换和原码补码反码那里都有介绍的
兴宾区18349456425: 编程原码转补码 - ?
撒秆复方: 1:我们来看一下补码的求得过程:将原码的各位取反,再加1,得到补码.举个例子,1001,它全部取反之后就是0110,再加1得到0111.将原码与补码加相,会得到10000.我们应该知道,计算机最基础的运算器只能做加法,所以叫累加器,...
兴宾区18349456425: 二进制原码补码转换c语言源代码 - ?
撒秆复方: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29#include <stdio.h> intmain() {charin[10], out[10];scanf("%s", in);if(strlen(in) < 8 || in[0] == 0) printf("%s\n", in);else{inti;out[0] = '1';for(i = 1; i < 8; i ++){if(...
兴宾区18349456425: 想用c语言编一个原码转化为反码补码的程序,现在在考虑如何把1变成0,0变成1,这个怎么实现呢?求解答 - ?
撒秆复方: i=1-i;(当i=1时,1-i=0;当i=0时,1-i=1) 你的问题是这个意思么?