A. c语言中的二进制补码
(1)正数的补码:与原码相同。
(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
B. 怎么求一个负数的原码和补码
正数,本身就是补码。
负数,就用它的正数,减一取反,即可得到补码。
如:+9 的二进制是:0000 1001。
下面求-9 补码:
先减一:0000 1001 - 1 = 0000 1000;
再取反:1111 0111。
所以有:-9 补码 = 1111 0111。
这不就完了吗!
简不简单?意不意外?
原码反码符号位,讨论这些垃圾干嘛?
这些垃圾,只是那些专家用来骗吃骗喝的!
C. C语言中负数的补码怎么求
正数,本身就是补码。
负数,就用它的正数,减一取反,即可得到补码。
如,已知:+9 的二进制是:00001001。
下面求-9补码:
先减一:00001001-1=00001000;
再取反:11110111。
所以有:-9补码=11110111。
这不就完了吗!
简不简单?意不意外?
原码反码符号位,讨论这些垃圾干嘛?
这些垃圾,都是用来骗吃骗喝的!
D. 为什么c语言中可以用补码来表示负数
计算机中,只有加法器,没有减法器。
负数,必须转换成正数(即补码),用加法来计算。
你看十进制:
24 - 1 = 23
24 + 99 = (1) 23
舍弃进位,+99 就可以代替-1。
+99 就称为-1 的补数。
负数的补数= 负数+10^n, n 是位数。
二进制的补码,也是这样计算出来的。
负数的补码= 负数+2^n, n 是位数。
补码,与原码反码符号位,并无关系。
取反加一的理论,是不存在的。
E. C语言负数的进制转换
负数是有符号位的,在计算机中以补码的形式储存,最高位为1表示负数,其余位按位取反再加1,然后你再把二进制转换成8进制和16进制就可以了。
在C语言中,你可以用printf("%X",-617);输出16进制
用printf("%o",-617);输出8进制
F. C语言负数的补码怎么转换的如-12345怎么转化为53191的
数在计算机中是以二进制形式表示的。
数分为有符号数和无符号数。
原码、反码、补码都是有符号定点数的表示方法。
一个有符号定点数的最高位为符号位,0是正,1是副。
以下都以8位整数为例,
原码就是这个数本身的二进制形式。
例如
1000001
就是-1
0000001
就是+1
正数的反码和补码都是和原码相同。
负数的反码是将其原码除符号位之外的各位求反
[-3]反=[10000011]反=11111100
负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。
[-3]补=[10000011]补=11111101
一个数和它的补码是可逆的。
为什么要设立补码呢?
第一是为了能让计算机执行减法:
[a-b]补=a补+(-b)补
第二个原因是为了统一正0和负0
正零:00000000
负零:10000000
这两个数其实都是0,但他们的原码却有不同的表示。
但是他们的补码是一样的,都是00000000
特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)
[10000000]补
=[10000000]反+1
=11111111+1
=(1)00000000
=00000000(最高位溢出了,符号位变成了0)
有人会问
10000000这个补码表示的哪个数的补码呢?
其实这是一个规定,这个数表示的是-128
所以n位补码能表示的范围是
-2^(n-1)到2^(n-1)-1
比n位原码能表示的数多一个
G. 求高手指点,在C语言的编程中,如何实现十进制的负整数转换成二进制
负数在计算机内部是用补码表示的
例如 -1
1的原码是 0000 0001
则-1的反码是 1111 1110
补码是 1111 1111
所以 -1在计算机中表示为 1111 1111
二进制数中有符号数有符号位,该符号位为1表示是负数
比如:
11111111,如果是无符号数那么就代表:255,如果是有符号数就代表负127,最高位是符号位,为1,代表是负数,剩下的7位代表具体数值
H. 为什么c语言负数是以补码形式存放的
以-1和+1相加为例子。
一个字节,如果是负数,它是255,如果是正数,它是
-1。
255+1
=
256(1,0000,0000)
-1+1
=
0(0,0000,0000)
因为加到256后并不会真的进位,而是把op置位。所以整负数相加的问题很多地方都可以不去理会了。不用真正去区分正负了,只要依据最后需要的类型去处理结果就可以。
I. C语言中,如何求一个数的二进制补码举个例子,谢谢!
正数的补码是其原值
例如占一个字节的10,二进制为0 000 1010, 第一位0表示+,
补码也是0 000 1010
负数的话-10, 二进制为1 000 1010, 第一位1 表示-,
补码求法为 :符号位不变,其余取反再加1
1 000 1010 取反 1 111 0101
再加1: 1 111 0110