A. 关于c语言的补码
8bit(位)是一个Byte(字节).
2Byte(字节)是一个Word(字),16bit.
2Word(字)是一个DW(双字),32bit.
---------------------------------
二进制的每一个都有自己的权值。对于一个字节来讲,从左至右分别为128、64、32、16、8、4、2、1(发现规律了吧——乘2)
因为19=16+2+1,所以从右至左,第0位为1,第1位为1,第4位为1。
就得到了10011b
所以,如果用8位表示19当然就是00010011b
用16位表示就是0000000000010011b
用32位表示就是
--------------------------------------------------
至于你说的补码的问题,是因为在计算机中,为了存贮负数(要与正数和0分开,不能重码)而做的人为规定。
总之,你记住,计算机里存贮数都是用补码的形式。正数和0的补码永远都是自己,负数的补码就是它的绝对值按位取反,加1。
[0]补=00000000b
[1]补=00000001b
[2]补=00000010b
[3]补=00000011b
----------------
[-0]补=00000000b
[-1]补=11111111b(注:-1的绝对值为1,按位取反后为11111110b,加1就得到了-1的补码:11111111b)
[-2]补=11111110b
[-3]补=11111101b
B. 在C语言中,整数的数值是以补码形式存放的,补码是什么意思啊
使用补码代表负数,就可以把减法,转化为加法运算。
那么,在计算机中只要有一个加法器,就可以做加、减法了。
使用补码的意义,就是简化了计算机的硬件。
常识:时钟倒拨 3 小时,可以用正拨 9 小时代替。
怎么计算,自己推导吧。
--------
两位十进制数,共有 100 个数字:00~99。
那么,减一,就可以用 +99 代替:
25-1 = 24
25 + 99 = (1) 24
取后两位,忽略进位 100,结果,不就是相同的吗?
只要利用一个“较大的正数”代替负数,就能把减法变加法了。
这个较大的正数,就是负数的补数。
计算公式:-1 的补数=100-1 = 99。
-2 的补数=100-2 = 98。
。。。
--------
计算机中,使用的是二进制。
二进制的补数,就改称为:补码。
八位二进制数,共有 256 个数字:0000 0000~1111 1111。
那么,-1 的补码就是 1111 1111 = 255(十进制)。
同理,-2 的补码就是 1111 1110 = 254(十进制)。
。。。
最后,-128的补码就是 1000 0000 = 128(十进制)。
计算公式:负数的补码=【256+这个负数】
零和正数,不需要求补数(补码),直接计算即可。
C. c语言中原码,补码分别是什么意思
原码就是原来数字的二进制的表示 比如 15= 1110 这个是15的原码 他的补码就是0001
D. 在C语言中补码什么意思
补码主要是为了cpu运算器在进行减法运算时避免借位而设立的。
在早期,cpu中的运算器部分,只要实现一个加法器就可以完成四由算术运算。
因为计算机中的数值编码是有限位数的,所以减法实际上相当于加上减数的补码,而乘法是循环的加法,除法是循环的减法。这种思想在数学上叫转化思想,在兵法上与”借刀杀人“、”借尸还魂“的借是“异曲同工”,用牛顿的话叫做“站在巨人的肩上“。
举例说明,以8位的二进制为例,要计算1-1,只要用1加上-1的补码即可。
-1的原码:1000 0001,最高位是符号为,1表示负数,0表示正数。
-1的反码:1111 1110, 按位取反是除符号位以外,其它每个位上的0变成1,1变成0。
-1的补码:1111 1111,在反码的基础上是加上1即为补码。
1-1 = 1+ 1111 1111 = 1 0000 0000 ,因为只有8位的二进制表示方法,此时溢出了,溢出位在硬件上是没法表示的,因此结果还是0.
E. C语言里的补码是什么意思多举几个例子来解释.
补码,是在计算机内部,正负数的存放格式。
C 语言是高级语言。
用高级语言编程,是不用关心计算机内部的事的。
如果非要涉及计算机内部的细节,那就不是高级语言了。
很多教材书籍的作者,都没有弄明白:什么是高级语言。
计算机内部的码,有很多种了,要是讨论起来,C 语言就学不完了。
F. C语言补码作用
用16bit表示,三个码分别是:原码、反码、补码
-0:
1000
0000
0000
0000、1111
1111
1111
1111、0000
0000
0000
0000
-6875:
1001
1010
1101
1011、1110
0101
0010
0100、1110
0101
0010
0101
-11:
1000
0000
0000
1011、1111
1111
1111
0100、1111
1111
1111
0101
如果是8位,:原码、反码、补码分别为:
-0:
1000
0000、1111
1111、0000
0000
-11:
1000
1011、1111
0100、1111
0101
6875
无法表示,因为8位的最大表大范围是-128
~
127
正数:原码=补码
负数:
原码
=
正数部分(去掉负号)的二进制值,且符号位(最左边的比特位)为1
反码
=
正数部分(去掉负号)的二进制值,按位取反
补码
=
反码
+
1
G. C语言中为什么用补码表示负数,而不是直接在正数的前面加1呢
为什么用补码表示负数?
原理:用加法运算,也可以产生减法的效果。
目的:简化计算机的硬件。
在两位数之内,+99,就可以代替-1。
如:24 - 1 = 23
24 + 99 = (1) 23
只取两位,这两种算法,功能就是相同的。
加上 99,就相当于,减一!
物极必反,听说过吧?
99,就是-1 的补数。
-------------------
钟表的分针,正拨 59,也相当于倒拨 1 分钟!
-------------------
计算机用二进制,就改称为:补码。
八位二进制:0000 0000~1111 1111(十进制255)。
255(=1111 1111),就是-1 的补码。
254(=1111 1110),就是-2 的补码。
。。。
负数的补码 = 2^n + 该负数。(n 是二进制的位数。)
借助于补码,在计算机中,只需配置一个加法器,即可。
正数,没有补码,直接参加计算即可。
H. C语言中的原、反、补码
c语言中,所有的整型数据实际存储的都是补码。要计算补码,先要知道原码的概念,原码也就是一个10进制数的二进制表达方式,比如100的原码为1100100。补码的计算原则为:1对于无符号数以及有符号数中的正数,其补码就是原码本身;2对于有符号数中的负数,其补码为真值绝对值的反码加一,其中反码为原码按位取反。针对负数举例说明:-100在用char型(8位)表示时,其补码可以按照如下流程计算。1、100的原码为011001002、按位取反,得到反码为100110113、将反码加1,即10011011+1=10011100。于是-100的补码表示就是10011100,也就是0x9c(16进制)。