• 答初学者的几个问题 Anthony


    我是一个高三毕业生,最近在学习C语言,遇到一点困难,希望各位高手能够指教一二。
    1。为什么引如补码后,二进制计算会有不同效果?能够消除符号位影响?原理?
    2。电脑使进制变十六进制是先变二进制再变十六进制的吗?
    3。C中的10个0。1累加精确相加,不等于1,那不比计算器还差吗?
    4。OxfffL与Oxffff相等吗?为什么?
    5。那些原码,补码和偏移码需要懂得笔算吗?要学到什么程度才行啊?

    第1个问题比较复杂.这里只简单的说一下:
    补码的本质是把数轴的原点移到了最大整数的一半,所以在它全是正数,运算时没有负数.
    因此没有符号位的问题.

    它的好处是加减运算都可以一步完成.

    第2个问题
    计算机中没有数的进制概念,它只处理二进制数.
    进制换算只是程序的一种算法,它可以采取你所说的方式,也可以采用其它方式.

    第3个问题
    二进制的0.1不等于十进制的0.1.
    (十进制)0.1 = (二进制) 0.11111.... = (十进制)0.05 + 0.025 + 0.0125 + 0.00625 + .... != (十进制)0.1
    所以计算机不能精确表达数学意义上的0.1(无限精度).它只能保证其误差(精度)在某个范围内.

    在实际生活中,精度都不是无限的.有个故事,说英国的海岸线是不可测量的,因为如果用更小的尺子测量,
    结果会变大.

    第4个问题
    0xfffL(三个f)当然不等于0xffff(四个f).

    不过0xffffL == 0xffff. 原因是计算机比较时有保持精度的习惯,
    如果两个数据的长度(精度)不一样,它会把较小的精度扩大到较大的精度.

    第5个问题
    最少要能口算加减法.会笔算乘除法.
    数据不必要大.32以内即可.

    口算64以内的十进制数到十六进制的转换.
    熟记二进制到16进制转换.

  • 相关阅读:
    设计模式:备忘录模式(Memento)
    设计模式:中介者模式(Mediator)
    设计模式:迭代器模式(Iterator)
    设计模式:解释器模式(Interpreter)
    设计模式:命令模式(Command)
    设计模式:职责链模式(Chain of Responsibility)
    设计模式:单例模式(单例模式)
    win7硬盘安装方法
    sqlite 附加和分离数据库
    Sqlite 复制表结构和数据
  • 原文地址:https://www.cnblogs.com/ahuangliang/p/5309289.html
Copyright © 2020-2023  润新知