问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

急急急急……C语言菜鸟……

发布网友 发布时间:2023-05-16 19:43

我来回答

3个回答

热心网友 时间:2024-10-23 03:25

原码、补码和反码

(1)原码表示法

原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作〔x〕原。

例如,X1= +1010110

X2= 一1001010

其原码记作:

〔X1〕原=[+1010110]原=01010110

〔X2〕原=[-1001010]原=11001010

原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,其表示范围:

最大值为0.1111111,其真值约为(0.99)10

最小值为1.1111111,其真值约为(一0.99)10

当用8位二进制来表示整数原码时,其表示范围:

最大值为01111111,其真值为(127)10

最小值为11111111,其真值为(-127)10

在原码表示法中,对0有两种表示形式:

〔+0〕原=00000000

[-0] 原=10000000

(2)补码表示法

机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作〔X〕补。

例如,[X1]=+1010110

[X2]= 一1001010

[X1]原=01010110

[X1]补=01010110

即 [X1]原=[X1]补=01010110

[X2] 原= 11001010

[X2] 补=10110101+1=10110110

补码表示数的范围与二进制位数有关。当采用8位二进制表示时,小数补码的表示范围:

最大为0.1111111,其真值为(0.99)10

最小为1.0000000,其真值为(一1)10

采用8位二进制表示时,整数补码的表示范围:

最大为01111111,其真值为(127)10

最小为10000000,其真值为(一128)10

在补码表示法中,0只有一种表示形式:

[+0]补=00000000

[+0]补=11111111+1=00000000(由于受设备字长的*,最后的进位丢失)

所以有[+0]补=[+0]补=00000000

(3)反码表示法

机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作〔X〕反。

例如:X1= +1010110

X2= 一1001010

〔X1〕原=01010110

[X1]反=〔X1〕原=01010110

[X2]原=11001010

[X2]反=10110101

反码通常作为求补过程的中间形式,即在一个负数的反码的未位上加1,就得到了该负数的补码。

例1. 已知[X]原=10011010,求[X]补。

分析如下:

由[X]原求[X]补的原则是:若机器数为正数,则[X]原=[X]补;若机器数为负数,则该机器数的补码可对它的原码(符号位除外)所有位求反,再在未位加1而得到。现给定的机器数为负数,故有[X]补=[X]原十1,即

[X]原=10011010

[X]反=11100101

十) 1

[X]补=11100110

例2. 已知[X]补=11100110,求〔X〕原。

分析如下:

对于机器数为正数,则〔X〕原=〔X〕补

对于机器数为负数,则有〔X〕原=〔〔X〕补〕补

现给定的为负数,故有:

〔X〕补=11100110

〔〔X〕补〕反=10011001

十) 1

〔〔X〕补〕补=10011010=〔X〕原

或者说:

数在计算机中是以二进制形式表示的。
数分为有符号数和无符号数。
原码、反码、补码都是有符号定点数的表示方法。
一个有符号定点数的最高位为符号位,0是正,1是副。

以下都以8位整数为例,

原码就是这个数本身的二进制形式。
例如
0000001 就是+1
1000001 就是-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位原码能表示的数多一个

又例:
1011
原码:01011
反码:01011 //正数时,反码=原码
补码:01011 //正数时,补码=原码

-1011
原码:11011
反码:10100 //负数时,反码为原码取反
补码:10101 //负数时,补码为原码取反+1

0.1101
原码:0.1101
反码:0.1101 //正数时,反码=原码
补码:0.1101 //正数时,补码=原码

-0.1101
原码:1.1101
反码:1.0010 //负数时,反码为原码取反
补码:1.0011 //负数时,补码为原码取反+1

在计算机内,定点数有3种表示法:原码、反码和补码

所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

假设有一 int 类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000 00000000 00000000 00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
现在想知道,-5在计算机中如何表示?
在计算机中,负数以其正值的补码形式表达。
什么叫补码呢?这得从原码,反码说起。

原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
比如 00000000 00000000 00000000 00000101 是 5的 原码。
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)
比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。
称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。
反码是相互的,所以也可称:
11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。
补码:反码加1称为补码。
也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。
那么,补码为:
11111111 11111111 11111111 11111010 1 = 11111111 11111111 11111111 11111011
所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。

再举一例,我们来看整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
1、先取1的原码:00000000 00000000 00000000 00000001
2、得反码: 11111111 11111111 11111111 11111110
3、得补码: 11111111 11111111 11111111 11111111

正数的原码,补码,反码都相同,都等于它本身
负数的补码是:符号位为1,其余各位求反,末位加1
反码是:符号位为1,其余各位求反,但末位不加1
也就是说,反码末位加上1就是补码

1100110011 原
1011001100 反 除符号位,按位取反
1011001101 补 除符号位,按位取反再加1

正数的原反补是一样的
在计算机中,数据是以补码的形式存储的:
在n位的机器数中,最高位为符号位,该位为零表示为正,为1表示为负;
其余n-1位为数值位,各位的值可为0或1。

当真值为正时:原码、反码、补码数值位完全相同;
当真值为负时: 原码的数值位保持原样,
反码的数值位是原码数值位的各位取反,
补码则是反码的最低位加一。
注意符号位不变。
如:若机器数是16位:
十进制数 17 的原码、反码与补码均为: 0000000000010001
十进制数-17 的原码、反码与补码分别为:1000000000010001、1111111111101110、1111111111101111

在C语言中,函数是程序的基本组成单位,因此可以很方便地用函数作为程序模块来实现C语言程序。

利用函数,不仅可以实现程序的模块化,程序设计得简单和直观,提高了程序的易读性和可维护性,而且还可以把程序中普通用到的一些计算或操作编成通用的函数,以供随时调用,这样可以大大地减轻程序员的代码工作量。

函数是C语言的基本构件,是所有程序活动的舞台。函数的一般形式是:

type-specifier function_name(parameter list)

parameter declarations

{

body of the function

}

类型说明符定义了函数中return语句返回值的类型,该返回值可以是任何有效类型。如果没有类型说明符出现,函数返回一个整型值。参数表是一个用逗号分隔的变量表,当函数被调用时这些变量接收调用参数的值。一个函数可以没有参数,这时函数表是空的。但即使没有参数,括号仍然是必须要有的。参数说明段定义了其中参数的类型。

热心网友 时间:2024-10-23 03:25

详细的我就不多说了,看楼上的已经很够用了。我帮楼主总结一下:

补码,计算机系统的数值表示法。其表示法为即正数与原码相同,负数为原码取反加一。

C语言中,可以将一段经常需要使用的代码封装起来,在需要使用时可以直接调用,这就是函数。

有问题请楼主补充,谢谢!

热心网友 时间:2024-10-23 03:26

补码(two's complement)
1、在计算机系统中,数值一律用补码来表示(存储)。
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。

设在某变化过程中有两个变量x、y,如果对于x在某一范围内的每一个确定的值,y都有唯一确定的值与它对应,那么就称y是x的函数,x叫做自变量
各位高手,我是一个C语言菜鸟,我是自己自学C语言的,可是效果不好,请问...

还有,当你基本了解了C语言的语言结构了,会运用那么基本的语句,可以上去北大的acm网站上做做题,提高自己的能力。当然一开始,要做些容易的,通过高的题做。北大acm的网站是http://acm.pku.edu.cn/JudgeOnline/ 学习编程的同时,要学习调试程序,好好运用编译器的功能,这样就会慢慢地学到C语言的规...

菜鸟选手C语言求助

回答:#include <stdio.h> int main() { int a,b,c[100],i=0,j; while(scanf("%d%d",&a,&b)) { if(a==0&&b==0) break; c[i++]=a+b; } for(j=0;j<i;j++) printf("%d\n\n",c[j]); return 0; } 满意请采纳!

C语言菜鸟求助,大神预编译头怎么用

预编译头文件名为 stdafx.h 使用预编译头的项目, 所有代码都必须将 include <stdafx.h> 插入到第一行, 但是预处理器不会处理它, 编译器会将其先构建, 再作为库连接.将代码需要大量使用的库的头文件(如 stdio.h )包含到 stdafx.h 中, 可以提高编译速度....

基于C语言开发的菜鸟驿站管理系统

随着互联网购物的蓬勃发展,快递行业的需求日新月异。我们运用C语言的威力,构建了一个高效且安全的菜鸟驿站管理系统,旨在优化快递管理流程,确保信息准确无误地送达。这个系统的核心在于C11标准支持下的汉字编程,以及对用户和管理员功能模块的精细设计。模块设计 管理员界面 - 精心构建的后台管理界面,如图...

C语言的大虾进来一下,我是菜鸟...

b,c代入 2 \n是换行符 3 引号代表其为字符串 4 if(a==3){ //如果a等于3,do something A } else { //否则,do something B } do { //do something a++;}while(a<5)//先做do里面的事情,直到while里的条件不为真,就跳出循环 5 谭浩强的那本C语言吧,简单易懂 ...

急急急急……C语言菜鸟……

函数是C语言的基本构件,是所有程序活动的舞台。函数的一般形式是: type-specifier function_name(parameter list) parameter declarations { body of the function } 类型说明符定义了函数中return语句返回值的类型,该返回值可以是任何有效类型。如果没有类型说明符出现,函数返回一个整型值。参数表是一个用逗号分隔的变...

C语言在线工具菜鸟工具能不能输入两次数据

C语言在线工具菜鸟工具能输入两次数据。每次要求用户输入时,可以通过调用标准库函数获取用户输入,如:getc(),gets(),getchar(),scanf("%d",&a)等等,你调用几次,程序就会要求用户输入几次,这个问题很容易解决的。//参考代码如下:#include#define N 5int main(){ int i,a[N],j; for...

c语言中的菜鸟问题

n++ 先引用,后自增1 ++n 先自增1,后引用 比如说 int n=2;int m=5;int a;int b;a=n++;b=++m;那么运行之后 a=2;b=6;明白了吗

c语言菜鸟 求详解啊

答案选C.ex变量在此是共用体变量,里面数据公用一个空间(最大那个),此处占用空间最大的为int型和float型,char只占用一个。所以三个变量一共只占4个字节就够了。故选C

c语言,我的菜鸟

楼主程序写错了吧 for(n=0;n<=5;n=n+1);后面的“;”应去掉 去掉;号后,你上面那个程序正确运行结果应该是 既连续36个*号,最后面是一个换格符 如果你把你的那个printf("\n")移到printf("*");后面,但在花括号里面 结果就变成

C语言菜鸟100例 菜鸟程序C语言 c语言数据结构菜鸟教程 菜鸟级c语言代码 c语言菜鸟教程网页版 汇编语言菜鸟教程 菜鸟教程在线c语言编辑器 c语言是什么语言 C语言100例
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
文件密使无法恢复解密,请高手帮忙 加密文件打不开了,请教高手..急需用那些文件 跪求电脑高手帮忙解决文件加密问题,我把所有积分给他。 我的优盘是联想的,用自带的加密软件加密后,忘了密码,请教高手,怎么解密... pe pb是什么 抱着柴火去火跟前猜谜语 关于租用办公室房产税如何计算与缴纳的问题 一个人抱着柴火前方是火是打一成语的谜语 ...前男友跟别的女人抱一起的时候,放的背景纯音乐出自哪里 ...从前男友家出来后被阿苏接上车,在车上的背景音乐是什么,在哪里有下... 饿了么没有登录之前扫码,和登录之后不一样嘛 安居客和链家哪个真实 软件项目开发流程是什么样子的 一般情况下,水痘的潜伏期是多久 长水痘多长时间才不会传染潜伏期有多久 华为手机背面有aicamera是什么型号 ...通信适配器来实现RS422数据和CAN总线数据之间的相互转换,能够实现... audioclipapp下载不了 合掌点赞是什么意思呢 双手叠加点赞是什么意思 苹果手机电板检测一下要多长时间 人为把空调电板弄脱焊看的出来吗 怎样知道空气炸锅电板坏 怎样判断电板好坏 冠捷如何在电板上检查是否通电 疏密相间的意思 亲疏随缘什么意思? 淘宝投诉卖家怎么投诉? 羽泉的《彩虹》属不属于摇滚曲风啊 妆銮的网络解释妆銮的网络解释是什么 西洋棋棋盘有多少格子 被称为“西洋棋”的国际象棋,其实起源于哪个大洲? 租的苹果手表有监管锁吗 牛腩肉好吃吗? 谁能帮我做一个简单的Flish啊,帮我放进我制作的网页里 帮忙做个FLISH动画 原神CV应聘有限制吗? 青岛网页建设哪家好呢? oppor9s无卡托怎么插卡 cf帧数如何锁120 光凭聊天记录可以抓人吗? ...传唤仅凭转账记录,能否认定嫖娼事实?仅凭聊天记录,能否认定嫖娼行为... 仅凭聊天记录可以作为认定事实的 星汉灿烂幕僚是什么 电信流量卡这么便宜网速多少 广州电信卡为啥这么便宜 为什么电信套餐价格越低,流量月多 结束时用的英文歌 佛像搬家需要注意什么 摆放位置很重要 信用卡淘宝有效期是什么