不懂什么是补码——华为面试被毙_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > 不懂什么是补码——华为面试被毙

不懂什么是补码——华为面试被毙

 2010/11/19 9:18:40  ErinToJerry  http://erintojerry.javaeye.com  我要评论(0)
  • 摘要:听闻某学长被内推到华为面试,结果因为答不上补码是什么而被毙。旷世悲剧啊。让我们来稍微回顾一下下。在计算机系统中,数值用补码来表示(存储)。这样做的好处有很多。计算机采用补码运算非常方便(计算机中数据受字长的限制,数据的运算属于有模运算,并且对运算结果能方便地按模丢掉),而且可使减法运算由加法运算实现。我们不管补码的标准化定义(始终觉得那是数学家做的事情),直接来看补码的求法。正数的补码,即是正数的原码;负数的补码,符号位不变,数值部分取反,然后末位加1.x=0.100101,则[x]原=0
  • 标签:补码 华为面试

??? 听闻某学长被内推到华为面试,结果因为答不上补码是什么而被毙。旷世悲剧啊。让我们来稍微回顾一下下。

?

??? 在计算机系统中,数值用补码来表示(存储)。这样做的好处有很多。计算机采用补码运算非常方便(计算机中数据受字长的限制,数据的运算属于有模运算,并且对运算结果能方便地按模丢掉),而且可使减法运算由加法运算实现。

?

??? 我们不管补码的标准化定义(始终觉得那是数学家做的事情),直接来看补码的求法。

?

??? 正数的补码,即是正数的原码;

??? 负数的补码,符号位不变,数值部分取反,然后末位加1.

?

??? x=0.100101,

??????? 则[x]原=0.100101

??????? 故[x]补=0.100101

???

??? x=-0.100101,

?????? ?则[x]原=1.100101(负数原码:符号位为1,数值部分取原数的绝对值)

?????????? [x]反=1.011010(负数反码:符号位为1,数值部分按位取反)

??????? 故[x]补=1.011011(负数补码:符号位为1,数值部分在反码的基础上末位加1)

?

?

发表评论
用户名: 匿名