星期三, 十月 11, 2006

20061011:数值表示

编程卓越之道笔记.

一.数/字符串转换
十进制数字组成的字符串转换为一个整型数的算法
1.将变量设置为0
2.如果串中没有数字了,则算法结束,该变量存储的就是对应的数
3.从串中取下一个数字(从左到右)
4.将变量乘10,在加上步骤3中取道的数字
5.回到第2步

整型数转换为字符串
1.初始化一个空字符串
2.如果整数为0,则输出0,算法结束
3.将当前的数除以10,得到商和余数
4.将余数(0..9)转换成一个字符,放到字符串的尾部
5.如果商不为0,则将商作为新的整型数,重复3-5步;如果商为0则结束转换
6.将字符串中的字符逆序输出

二.有符号数和无符号数
1.大多数计算机采用二进制补码系统来表示有符号数.使用n位可用表示范围在-2^(n-1)到+2^(n-1)-1内的数.
2.二进制补码系统采用在最高位作为符号位.如果是0,表示非负;如果是1,表示负数.
3.二进制补码表示的数的取负,算法为:将该数所有位取反,然后加1.考虑溢出,我们不允许对二进制补码计数系统中的最小值取负.例如:16位的二进制补码系统中的-32768(%1000_0000_0000_0000),取反后为(%0111_1111_1111_1111),再加1为(%1000_0000_0000_0000),即-32768.显然取负失败.

没有评论: