编程中的那些容易迷糊的小知识

我们在学习中,很多东西我们都以为我们已经会了,但当我们再次见到的时候,也许会遇到一些问题。

1、赋值运算符

我们都知道,赋值运算符左方的操作数必须是一个变量,而右侧的操作数则可以是任意表达式。这个规则我们都耳熟能详,但你是否真正理解其背后的含义呢?

在博主初学编程,学C++的运算符时,曾产生这样的疑问,假设有下面这样一段代码:

int a = 0, b, c;
b = a + b = 5;

那么这段程序该怎么执行呢?本着不耻下问的态度,寻求了诸多前辈的帮助,结果有点点惨不忍睹。。。得到的答案五花八门,博主都有点怀疑人生。之后拿编译器测试之后,才意识到这段代码有着明显的语法错误,赋值运算符左侧写为 a+b 本身已经不合法,又谈何执行顺序呢。

 

2、机器数

机器数(computer number)是将符号“数字化”的数,是数字在计算机中的二进制白哦是形式。机器数有两个特点:一是符号数字化,二是其数的大小受机器字长的限制。

2.1 定点数

定点数一般用来表示整数。我们认为整数没有小数部分,小数点固定在数的最右边。整数可分为无符号整数和有符号整数两类。无符号整数的所有二进制位全用来表示数值的大小;有符号整数用最高位表示数的正负,而其他位表示数值的大小。例如十进制整数-65的计算机内表示可以是11000001。

2.2 浮点数

浮点数用于表示除了整数以外的实数,表示方法是:把一个实数的范围和精度分别用阶码和尾数来表示。在计算机中,为了提高数据表示精度,必须唯一地表示小数点的位置,因此规定浮点数必须写成规范化的形式,即当尾数不为0时,其绝对值大于或者等于0.5且小于1(注:因为是二进制数,要求尾数的第1位必须是1)。格式: 阶码符号位|阶码|尾数符号位|尾数( ps:“|”只是为了表示隔断,实际是没有的)

eg1、例如设机器字长为16位,尾数为8位,阶码为6位,则二进制实数-1101.010的机内表示为0|000100|1|11010100

eg2、例如设机器字长为16位,阶码用6位,尾数用8位的话,二进制实数-1.1101的机内表示表为 0|000001|1|11101000

另注:机器码和机器数是两个不同的概念。

  1. 机器码:将硬件序列号经过一系列加密、散列形成的一串序列号。
  2. 机器数:将符号“数字化”的数,是数字在计算机中的二进制表示形式。

 

持续更新中!!!

 

作者:耑新新,发布于  博客园

转载请注明出处,欢迎邮件交流:zhuanxinxin@aliyun.com

posted on 2017-10-10 20:09  Arthurian  阅读(398)  评论(0编辑  收藏  举报