首页  >  编程教程  >  编程问答  >  什么是原码?

什么是原码?

定义:

原码是一种二进制定点表示方法,第一位表示符号,用“0”表示“+”,用“1”表示“-”,其余位表示数值。

举例:(4位二进制数)

真值原码真值原码
00000-01000
10001-11001
20010-21010
30011-31011
40100-41100
50101-51101
60110-61110
70111-71111

数值范围:

一个字长为n的机器数能表示不同的数字的个数为2n个,例如:n=8时,2n=256。如果用来表示有符号数,数的范围就是-2n-1-1~2n-1-1,n=8时,这个范围就是-127~127。

但是,在不需要考虑数的正负时,就不需要用一位来表示符号位,n位机器数全部用来表示数值,这时表示数的范围就是0~2n-1,n=8时,这个范围就是0~255。没有符号位的数,称为无符号数。

优点:

原码表示直观易懂,与真值间转换容易,是人脑最容易理解和计算的表示方式。

缺点:

原码不能直接参加运算。

例: 0001+0001=0010,1+1=2

     0000+1000=1000,0+(-0)=-0

     0001+1001=1010,1+(-1)=-2

由此我们知道,正数之间的加法一般不会出错,而正数和负数相加会出现错误结果,这是由于符号位的存在而引起的。



本文固定URL:https://www.dotcpp.com/qa/29

下一页:什么是反码?

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

编程杂谈
编程基础
知识答疑