关于C语言中补码与原码以及十进制转换二进制的问题

作者&投稿:樊严 (若有异议请与网页底部的电邮联系)
C语言涉及二进制数的原码和补码问题~

注意char实际上是signed
char,即有符号的。short也是signed
short
char的取值为-128~127,也就是最高位为符号位.
char
b=255用十六进制表示的话就是0xFF,也就是1111
1111.
2的补码的规则是:符号位不变,剩余的取反加1。所以-1用二的补码表示步骤如下:
1)符号位为1,
也就是1000
0001
2)剩余的取反,即1111
1110
3)加一:即1111
1111
也就是0xFF,十进制就是255
当把它赋给short型时,变为16位,也就是成了1111
1111
1111
1111(0xFFFF),依然是-1的二的补码。
所以输出-1

楼主应该将计算机进制转换与数学进制转换分开。一般在数学上没有什么补码、原码,需要转换直接转换即可,最后加个负号。例如:-3 十进制= -11 二进制 在计算机上只有1和0,为了便于表示将负号表示为1将正号表示为0.计算机存储数据是以补码形式存储的。其实补码与原码之间的关系很简单。正数的补码就是原码本身负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。

给楼主举个例子就明白了补码是数在内存中的存放形式比如,正数1的补码就是其二进制码: 000 000 000 000 000 000 001则负数1(-1)的补码就是正数1的反码(111 111 111 111 111 111 111 110) 再加1:即111 111 111 111 111 111 111 111。至于十进制到二进制转换,建议你搜一下,这是高中的课程

年轻人 上课不听 现在补考了吧 看书去。。


刚接触c语言 是说输入的时候 电脑当做补码 然后输出原码吗
计算机存储整型数据都是采用补码来表示的。用补码 1.解决了+0,-0的问题,2.所有的运算都可以采用加法来实现 我们在输入数据的时候,都是人现实生活中能理解的数:如,10进制数,计算机在存储的时候会自动转换成补码来存放和运算。 输出时,又会按人的要求,自动转换成相应的可识别的数据来显示。sh...

C语言,原码补码转换,-12345求其补码,求教!
负数的原码、反码、补码不同。以两个字节(16位)为例(short类型)来理解一下:(-1)原=1000 0000 0000 0001 最高位为符号位1负,0正,数据总长度为16bits (-1)反=1111 1111 1111 1110 原码除符号位外,逐位取反 (-1)补=1111 1111 1111 1111 反码+1 由此,我们来看-12345的补码:...

C语言原码补码按位运算问题!
-20转换为二进制按规则应该是 1000 0000 0001 0100;这个就是原码,但是计算机中不是这么存储的;然后将符号位以外的这15位取反,得到,1111 1111 1110 1011;这个叫反码 之后再加上1,得到,1111 1111 1110 1100;这个是补码(计算机中存储的-20)从一个二进制数反推回十进制,按相反的顺序计算即可.位运算>...

关于C语言的程序设计原码、反码和补码的问题
是正数的原码和补码相同 负数的补码等于其对应的正数的反码+1

C语言中,补码换到原码时,减1是怎么处理好啊??
其实 补码和原码之间就是求反、加一(即求相反数)的关系 原码到补码是 补码到原码也是 所以补码换到原码时不用减1,直接按原码到补码的操作进行就可以了

原码 补码 反码 之间有什么关系
从而简化计算机的运算规则.   ⑵使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计   所有这些转换都是在计算机的最底层进行的,而在我们使用的汇编、C等其他高级语言中使用的都是原码。 看了上面这些大家应该对原码、反码、补码的知识印象更深了吧!!下面介绍2的补码记数法 图1显示了两...

原码,反码,补码,移码,阶码怎么算?
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。1、原码、反码和补码的表示方法 (1) 原码:在数值前直接加一符号位的表示法。例如: 符号位 数值位 [+7]原= 0 0000111 B [-7]...

C语言中的反码,补码有什么作用?
计算机中,只有补码,并没有原码和反码。补码,是带符号数,在计算机中的储存形式。C 语言是高级语言。用高级语言编程,只能、也必须,使用正负数字,不能用补码。如果需要使用补码,那就不是高级语言了。高级语言,是不用涉及到计算机内部的。所以,计算机内部的补码,就和高级语言毫无关系。在 C 语言...

C语言中一个补码问题!
32769超过了8位的范围啊,8位补码能表示的范围只有-128——127.只有16位才可以表示32769这么大的数字。结果是:0000,0001 如果用强制类型转换的话:取低八位 你可以用个程序来测一下:include <iostream> using namespace std;void main(){ int a = 32769;char c;c=a;int b;b=c;cout<<b<...

求助一个c语言问题?
[+0] = [00000000]原 = [00000000]反 = [00000000]补 [-0] = [10000000]原 = [11111111]反 = [00000000]补 既然+0和-0的补码一致,所以只需保留一个(+0和-0原码不同,注意看符号位)。这样一来,“[-0] = [10000000]原”相当于没有使用,于是规定:“[10000000]”为-128。既然是...

塔什库尔干塔吉克自治县19823901868: 原码 反码 补码怎么转换 -
邓树正柴: 反码补码原码怎么转换,来看看方法吧. 1、首先原始代码的最高位是符号位,0表示正,1表示负,中间值表示数字的绝对值. 2、符号的反转,正数符号的反转与原符号相同,负数的补数是该符号的最低有效位数加上1. 3、补数,正数的补数与原代码相同,负数的补数在其倒数第一的基础上加1.零分为+0和-0. 进行不同符号的加法或同一符号的减法时,不能直接进行加法或减法,不能直接给出正负的结果. 4、必须先取绝对值,然后再加上减法. 符号比特由较大的绝对值决定,因此出现了转码. 反码是对原始代码的改进.补码在针对加减运算和正负零的问题上都解决了,平时用的最多的也就是补码.

塔什库尔干塔吉克自治县19823901868: 编程原码转补码 -
邓树正柴: 1:我们来看一下补码的求得过程:将原码的各位取反,再加1,得到补码.举个例子,1001,它全部取反之后就是0110,再加1得到0111.将原码与补码加相,会得到10000.我们应该知道,计算机最基础的运算器只能做加法,所以叫累加器,...

塔什库尔干塔吉克自治县19823901868: 学反码、补码、原码 -
邓树正柴: 你是在学C语言吧其实这几种码制转换不用买什么书的,多看几次c语言的书,多记几个相关的例子就可以了,下面是一些资料,多看几遍就行:1、在计算机系统中,数值一律用补码来表示(存储).主要原因:使用补码,可以将符号位...

塔什库尔干塔吉克自治县19823901868: C语言十进制转化为二进制,包含负数和0? -
邓树正柴: 你想问补码吧? 正数,补码为原码. 负数,补码为反码+1. ±0,补码均为0.

塔什库尔干塔吉克自治县19823901868: C语言中一个数补码和原码是如何进行计算的? -
邓树正柴: 原码不论正负都是一样的,第一位是符号位,正数为0,负数为1,后面就是该数的二进制数 正数的反码和补码都与原码一样不变 负数的反码是除符号位外每位都取反 补码是反码的基础上加1

塔什库尔干塔吉克自治县19823901868: C语言中,原码,补码和反码怎么换算?
邓树正柴: 数在计算机中是以二进制形式表示的. 数分为有符号数和无符号数. 原码、反码、补码都是有符号定点数的表示方法. 一个有符号定点数的最高位为符号位,0是正,1是副. 以下都以8位整数为例, 原码就是这个数本身的二进制形式. 例如 ...

塔什库尔干塔吉克自治县19823901868: 原码 补码 反码 之间有什么关系 -
邓树正柴: 原码、反码、补码 1、 表示一个数值要先说明是用多少bit,例如: 用8bit表示数值时,(-128)没有相对应的原码和反码, (-128)补码 = (1000 0000) 同理(2B=16bit)表示:(-32768)补码=(1000 0000 0000 0000),后面回给出证明...

塔什库尔干塔吉克自治县19823901868: 输入一个十进制数,用C语言输出其原码补码反码移码(十进制数可以为正负数整数小数) -
邓树正柴: #include<stdio.h>#include<math.h> void main() { int m,n,a[10],i=0,y[100],f[100],b[100],j,k; printf("请输入一个整数:"); scanf("%d",&n); m=abs(n); while (m!=0) { a[i]=m%2; m=m/2; i=i+1; } if (n>=0) { for(j=0;j<i;j++) y[j]=a[j]; if ((j+1)%8!=0) for(;(...

塔什库尔干塔吉克自治县19823901868: C语言中的源码和补码是什么,还有进制,详细说一下
邓树正柴: 首先我们说进制,如果说我们经常谈到的数据,那么就是10进制的.我们还见到的是60进制的,那就是时间,还有角度的360进制的.计算机中经常使用的是8进制,16进制,2进制. 对于8进制的,那么每一位所能使用的数字只有0~7,八进制...

塔什库尔干塔吉克自治县19823901868: 在C语言中,“原码,反码和补码”有什么不同啊? -
邓树正柴: 1)原码表示 原码表示法是机器数的一种简单的表示法.其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示.设有一数为x,则原码表示可记作[x]原. 例如,X1= +1010110 X2= 一1001010 其原码记作: [X1]原=[+1010110]原=...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网