定义:
原码是一种二进制定点表示方法,第一位表示符号,用“0”表示“+”,用“1”表示“-”,其余位表示数值。
举例:(4位二进制数)
真值 | 原码 | 真值 | 原码 |
0 | 0000 | -0 | 1000 |
1 | 0001 | -1 | 1001 |
2 | 0010 | -2 | 1010 |
3 | 0011 | -3 | 1011 |
4 | 0100 | -4 | 1100 |
5 | 0101 | -5 | 1101 |
6 | 0110 | -6 | 1110 |
7 | 0111 | -7 | 1111 |
数值范围:
一个字长为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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程