博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1.6 整数存储
阅读量:4947 次
发布时间:2019-06-11

本文共 1043 字,大约阅读时间需要 3 分钟。

数学家长久以来对数字记数系统很感兴趣,计算机中常用的两种整数的记数系统为二进制补码记数法和余码记数法。都基于二进制,但特性不同。

  1.6.1  二进制补码记数法

    现今系统中二进制补码记数法用的很普遍,其中每个数值用一个32位的模式表示。位模式中最左端的位为符号位,0代表非负数,1代表负数

    32模式可以表示很大的数值,但不利于学习。因此用较少的位模式来表示数字。

    假设用3位模式表示数值:

     000代表了十进制0

     正数:在000的基础上开始二进制计数,直到最高位为0,其他都是1为止。代表的是该模式所能表示最大的十进制非负数

     负数:111 代表-1,然后反向计数(每次计数做减法),直到最高位为1,其他位都为0为止。代表的是该模式所能表示最小的十进制负数

    

    二进制补码系统中,绝对值相等的数在位模式上也相近。例如:0110 与 1010。两个数都从右往左读,遇到位模式上第一个1时,以这个1为分界线,1右边这两个数的模式,也是之前读到的位取值都是一样的。1左边这两个数的模式互为补码。这样,绝对值相同的位模式,我们可以在正负之间方便的转换。

    了解了二进制补码系统的正负转换方法,当遇到符号位为1的二进制数要转换为十进制数时,我们只需要把这个数的位模式转换成绝对值的位模式得到它的绝对值,便得到了这个二进制负数的十进制负值。

    1. 二进制补码记数法中的加法:

      0101 + 0010 = 0111

      0111 + 1011 = 0010 (10010,两个数的位模式最大为4位,因此从最高位舍去1位)

    

    途中最后一个加法,说明了任何带符号数字组合的加法都可以用相同的算法来得出值,所以也可以用相同的电路。那么计算机只需要加法电路就可以满足加减法,只需要一个加法电路和取负电路就可以做加减法。

    2.溢出问题:

      4位模式中最大能表示的正整数为7,最小的负整数为-8。如果计算4+5的话得到的结果不为9而是-7,这种情况即计算的结果超过模式可表示的数的范围,称为溢出。检查位模式的符号位即能发现是否溢出。解决溢出,我们可以使用更长的位模式,或者改变度量单位

  1.6.2  余码记数法

     余码记数法的和补码记数法的区别就是符号位正好相反

    

 

转载于:https://www.cnblogs.com/mysic/p/9878500.html

你可能感兴趣的文章
安卓 android studio 报错 Lint found fatal errors while assembling a release target
查看>>
配置 host only 后 nat不能上网了
查看>>
debounce、throttle、requestAnimationFrame
查看>>
linux下的C语言快速学习—进程和文件
查看>>
电源防反接保护电路
查看>>
stm32 堆和栈(stm32 Heap & Stack)
查看>>
intellij idea 2017 修改主题样式
查看>>
SpringMVC从入门到精通之第三章
查看>>
JS基础-dom操作
查看>>
【转】Android详细的对话框AlertDialog.Builder使用方法
查看>>
Unite Beijing 2015大型活动
查看>>
loading加载的代码
查看>>
PHP框架CI CodeIgniter 的log_message开启日志记录方法
查看>>
arraylist
查看>>
关于poi导出excel三种方式HSSFWorkbook,SXSSFWorkbook,csv的总结
查看>>
zoj 1649 Rescue (BFS)(转载)
查看>>
371. Sum of Two Integers java solutions
查看>>
2124: 等差子序列 - BZOJ
查看>>
3529: [Sdoi2014]数表 - BZOJ
查看>>
hdu 4609 3-idiots——FFT
查看>>