首页教程使用技巧正文

c语言原码补码,C语言中,补码是什么,源码又是什么

发布时间:2024-02-17 17:07:03 来源:其它 作者:未知

1,C语言源码生成目标文件后的二进制码是原码,反码,还是补码?

1,C语言源码生成目标文件后的二进制码是原码,反码,还是补码?

当然是补码了计算机中所有的表示都是用补码因为正数的补码就是它本身,所以正数在内存中既是原码也是补码,负数肯定是补码了哦所以都是补码

你说的反码和原码只用了介绍补码为什么出现,实际上已经不用了?是因为为了引出补码的概念和利用反码和原码如何求补码,所以就介绍了反码和原码对于负数

补码取反+1;

所以原码取反(补码-1)

你看反码是补码和原码之间的联系,介绍它就是为了计算

对于正数,补码原码本身,也是为了求补码

先把3元2次方程求解,得2元1次方程

然后再用循环求满足条件的解

这个问题可以用1个循环完成

自己好好想想

好的数学家,不一定是好的程序员

但好的程序员,数学一定要好

计算机中的二进制码形式特指数值的二进制码形式

目标文件中包含有字符串,指令,相关数据等,其中数据部分大多是用补码形式保存的其它部分没有这样的概念

说大多是因为有些计算机体系不用补码形式保存数据

至于计算机倒底何时用原码,反码,补码,我想是楼主对码制有所误解

采用何种码制与CPU相关比如I386体系,负数用补码表示,C语言编译器在遇到负数时会转化成补码形式

应该是补码的,那只是表示形式的一种约定

数在计算机中是以二进制形式表示的

数分为有符号数和无符号数

原码,反码,补码都是有符号定点数的表示方法

一个有符号定点数的最高位为符号位,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位原码能表示的数多一个

2,C语言求原码的补码问题

2,C语言求原码的补码问题

数在计算机中是以二进制形式表示的

数分为有符号数和无符号数

原码,反码,补码都是有符号定点数的表示方法

一个有符号定点数的最高位为符号位,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位原码能表示的数多一个

文章TAG: 补码 原码 语言 c语言 源码 c语言原码补码

还没有评论,快来抢沙发吧!

最新发现

相关资讯

新闻热榜

热门游戏

精彩专题