为什么 C 负数以补码的形式存储?

发布于 科技 2024-06-20
18个回答
  1. 匿名用户2024-01-29

    计算机的硬件,只有加法器。

    负数,减法,必须通过加法来完成。

    你看一下十进制系统:

    24 + 99 = (一百) 23

    弃用携带,+99 可以算作 1。

    99 是 1 的补码。

    补码(补码)是“代替负数运算的正数”。

    对于 2 位十进制数,查找补码的公式为:

    补体 负数 10 2. 在计算机中,使用二进制,这称为补码。

    对于 8 位二进制数,求补码的公式:

    补体负 2 8. 1 的补码是:1 + 256 = 255 = 1111 1111。

    2 的补码是:2 + 256 = 254 = 1111 1110。

    128 的补码是:128 = 1000 0000。

    寻求补充,不要使用“原始代码取反加一”。 这种方法无法找到 128 的补码。

    而且,你无法理解补语的含义。 为什么 C 负数以补码的形式存储?

    在补码的帮助下,加减法统一,硬件简化。

  2. 匿名用户2024-01-28

    以 -1 和 +1 的相加为例。

    一个字节,如果是负数,它是 255,如果是正数,它是。

    因为加到256之后,它不会真正被携带,而是OP会被设置。 因此,在很多地方都可以忽略添加整数负数的问题。 你真的不需要区分正负,只需根据最后需要的类型处理结果即可。

  3. 匿名用户2024-01-27

    一个正数,它本身就是一个补充。

    否定的,只是使用其正数,减去 1 来否定以获得补充。

    例如,已知 9 的二进制是:0000 1001。

    让我们找到 9 个补充:

    减一:0000 1001 - 1 = 0000 1000;

    再次:1111 0111。 所以有:9 补码 = 1111 0111。

    这不就结束了吗!

    这不是很容易吗? 不感到惊讶吗?

    原来的代码是反比符号的,你为什么要讨论这个垃圾? 这些垃圾是用来作弊和作弊的!

  4. 匿名用户2024-01-26

    对于有符号数字(正号或负号),最高位是符号位。

    65 的二进制是。

    补码运算是按位否定。

    加 1 以数字否定:1

    加 1:如果直接将其转换为十进制,则将其视为无符号数并计数 1,因此它不是 -65。 10111111 至 -65:

    计算机根据符号位 1 确定符号为负数。

    按位否定:01000000 加 1:

    那是 65,然后是一个负数,即 -65

  5. 匿名用户2024-01-25

    0000 的二进制 7

    0111,是按位反,结果是 1111

    注意,最高位数是1,表示这是一个负数,负数是计算机中的补码,补码是十进制,补码负号保持不变,其他的都倒过来,最后加1,这就是原码。 即 1000

    是 -8 公式 n

    结果,它是。 (n+1)

  6. 匿名用户2024-01-24

    如果你不明白它的含义,你可以直接使用这个运算来求 1 +1 的补码。

  7. 匿名用户2024-01-23

    八位二进制 9 是 00001001 位否定11110110加上一个11110111加号位111110111

  8. 匿名用户2024-01-22

    计算机系统,则始终使用数值补语表示和存储。

    在计算机中,源代码和反向代码,所有这些都不存在。

    因此,要找到补体,您不必使用它们。

    补码由一系列二进制代码组成。

    实用的有 8 位或 16 位。 还有一点高端的。

    每个补码对应一个十进制数。

    请注意,最高数字对应于负数。

    然后,八位补码,即每个位的值,为:

    如果,有一个补码为:1011 1001。

    它代表数值为:128

    如果第一个数字是 0,则为为:0011 1001。

    查找数值甚至更简单32 + 16 + 8 + 1 = +57。

    掌握了以上规则后,从数值中找到补码就非常简单了。

    例如求 125 的八位数补码。

    是的对于负数,第一个数字必须是 1,表示值 128。

    与 125 相比,还应该有一个 3。

    表示 3 的七位数字是:000 0011。

    综上所述,125 的补码是:1000 0011。

    查找补码和数值是一件非常简单的事情。

    没有必要转向“原始代码被颠倒,并且将符号添加到相同的符号中”。

    外国人,脑子不好的人,会做什么样的飒爽操作!

  9. 匿名用户2024-01-21

    计算机中的负数用于便于计算,因此计算机使用补码来存储数据。 补码是一种计算机编码,便于加法运算。 例如,100(十进制) 100 16 = 6 余数 46 16 = 0 余数 6。

    因此,100 的十六进制数为 64h,在 8 位二进制中,正数 64h=01100100b 的补码与原始代码相同。

    所以 100 的补码仍然01100100。

    假设还有一个十六进制数 -109109,它是 01101101-109 的原始代码,它是 11101101 的逆代码(第一位是符号位)-109,这是10010010(除符号位外,其他地方都是反转的)。 109 的补码是 10010011(反向代码加 1)。 现在计算 100-109 = 100 + (-109)。

    01100100+10010011=11110111 是 -9 的补码。 切换到其他编码并不像切换到其他编码那么简单。

    例 1653:如果添加了原始代码,则存在符号位携带问题,依此类推。 对于计算机。 数值补码的计算是最方便的。

  10. 匿名用户2024-01-20

    所谓补码,其实就是“代替负数运算”的正数。

    十进制更容易理解。

    如果合格仅使用 2 个十进制数,您可以拥有:

    24 + 99 = (一百) 23

    保留 2 位数字并放弃四舍五入,+99 等于 1。

    99 称为 1 的补码。

    98 是 2 的补充。

    查找补体的公式:

    补码 = 负数 + 10 n,n 是位数。

    计算机使用基本的二进制系统,补码,所以它被称为补码。

    求补码的公式:

    补码 = 负数 + 2 n,n 是位数。

    在计算机中,为什么我们需要使用补码来表示负数?

    因为,通过使用补码,您可以消除负数!

    然后,在计算机中,没有减法运算。

    因此,可以简化计算机的硬件。

    原始代码和反向代码都没有此功能。

    所以,在计算机中,它们根本不存在。

  11. 匿名用户2024-01-19

    谭浩强的方法适用于位数小于字长,即符号位无法覆盖的情况。 与 -127 一样,它只能在指定的单词长度超过 8 位(包括符号位)时应用。 无论哪种方式都可以。

    谭浩强喜欢把简单的事情复杂化很多,让新手看不懂。 最直观的理解方式是方法1,负号位为1,符号位不变,去掉符号位后的绝对值部分倒置,再加1,即为负数的补码。

  12. 匿名用户2024-01-18

    补码功能类似:时针倒转 3 小时,效果与向前拨 9 小时相同。

    然后,计算机中的负数也可以更改为正数(即补码)。

    同时,减法运算可以用加法运算代替。

    因此,在补码的帮助下,加法和减法是统一的,计算机的硬件可以简化。

    十进制系统相对容易理解:

    25 + 99 = 一百) 24.

    只要你忽略携带,+99 代替 1。

    99 称为 1 的补码。

    此处使用 10 的 2 位数基数。

    查找补体的算法:补体 = 负数 + 10 n。

    n 是位数。

    计算机使用二进制,Complement,它更名为Complement。

    一个字节,即 8 位二进制。

    计数范围为:0000 0000 1111 1111(十进制 255)。

    计数周期为:2 8 = 256。

    求补码的算法:负数负数 2 n 的补码。

    然后:补码 1 的 1 + 256 = 255 = 1111 1111。

    补码 2 的 2 + 256 = 254 = 1111 1110。

    例如,7 2 = 5,使用如下补码计算:

    2] 补码 =

    得到:(1)。

    丢弃携带,结果恰到好处。

    在补码的帮助下,计算机中没有负数,因此减法转换为加法。

    补码的**与原始代码反转无关。

    反向添加。 1.符号位也可以参与操作“,这些都没有理论依据。

    通过对原始代码的反转,已经证明“符号位可以参与操作”是错误的。

    补码,它是一个正数,根本没有符号位。

    补码的所有位都代表数据,当然它们都可以参与操作。

  13. 匿名用户2024-01-17

    使用补码,您可以将符号位与其他位统一; 同时,减法也可以通过加法来处理。 此外,当两个由补码表示的数字相加时,如果最高数字(符号位)具有进位数字,则丢弃进位。

  14. 匿名用户2024-01-16

    为什么负数用补码表示?

    原理:通过加法运算,也可以产生减法的效果。

    目的:简化计算机的硬件。 在两位数以内,+99 可以代替 1。

    例如:24 1 = 23

    只取两位数,这两种算法容易滑倒,功能也一样。

    加上 99,就等于减去 1!

    听说过吗?

    99 是 1 的补码。 时钟袜子的分针和正确的表盘 59 也相当于倒退 1 分钟!

    计算机使用二进制,因此将其重命名为补码。 八进制二进制:0000 0000 1111 1111(十进制 255)。

    255 (=1111 1111),这是 1 的补码。

    254 (=1111 1110),这是 2 的补码。

    负数的补码是负数的 2 n。 (n 是二进制数字。 )

    在补码的帮助下,在计算机中,仅配置了一个加法器。

    正数,没有补码,只是参与计算。

  15. 匿名用户2024-01-15

    因为一个字节是八位。 我们总是用最高的位来表示符号位,正数的补码就是它本身。

    例如,如果正数为 0111、1111

    只需根据需要添加 1 即可

    不会是10111、1111吗?

    另外,补码由于计算机中的加减运算而表示负数,负数由补码计算出来,盯着从青,通过补码的加减法,得到的郑备补码再依次找到对应的负数,在计算机中计算的只有0和1

    数字前面不可能有加号或减号,所以负数必须补。

  16. 匿名用户2024-01-14

    [a] 补码 = 1111 1111 1111 1101,表示 a 是复数 2 16 - (a 的补码)给出 -a,因为 a 是负数,-a 是正数 [补码的优点是将两个相反的数字相加得到 0,如 -1: 1111 1111 1111 1111 1111;1: 0000 0000 0000 0001,无非是进位,所以用 2 16]。

    a=-[2 16-(a)的补码]得到数字的真值[这是原始大小,不包括符号位]。

    2 16 是 1 0000 0000 0000 0000,这是上面提到的进位位置。

  17. 匿名用户2024-01-13

    对原始代码的补充。

    因此,原始代码为:((2 16-1)-a+1)。

    其中 2 16-1 是二进制数:1111 1111 1111 1111 减去 A 是所有 A(包括最高数字)的按位否定。

    在 1 之后,我们必须用 1 替换最高位置(在计算机中它替换为 1),我们在表达它时取它的负值,所以在它前面加一个“-”

  18. 匿名用户2024-01-12

    补码是用于加法和减法运算。我们都知道,如果加一个负数,只需要减去它对应的正数,比如3+(-1)=3-1=2

    计算机是愚蠢的,它没有这种思维,他补充说是加法。

    3+(-3) 如果你用你的方式表示一个负数,结果是 0x03+0x83=0x86 显然不是 0,因为计算机不会将加法变成减法......

    另一种是弥补,0x03+0xfd=0x00这符合操作规则,为什么会有补码,-1上必须大于-2**,如果只是把第一个位置变成1,还是不符合这个规则,0x01 0x02如果只是第一个符号变化, 结论是0x81小于0x82这是一个错误-1<-2不合逻辑...... CPU只是一台机器,没有智商可言......

    计算机对数字的处理除了符号位0000000000一定是最小的数字,显然以单个字节为例,-128应该是全部0,用符号那么1000000就是一个小数字就是-128... 1+1 应该是 0,那么 ff+1=0,所以 ff 是 -1...

相关回答
14个回答2024-06-20

一个正数,它本身就是一个补充。

否定的,只是使用其正数,减去 1 来否定以获得补充。 >>>More

12个回答2024-06-20

求二进制负数补码的方法是先求正数的补码,再取倒加一; 正数不变,正数的原始码与反码补码相同。 >>>More

9个回答2024-06-20

当然是程序文件。

它是一个单一的铅弹簧庇护所。 >>>More

10个回答2024-06-20

总是有一个接受陌生事物的过程。 只要你不停地在电脑上练习,多想,你就会慢慢找到乐趣。 当我第一次开始学习时,它看起来像这样。 >>>More

9个回答2024-06-20

为什么你的 for inside (c = string[i])=' \0'啊,感觉好暧昧 >>>More