整型数制彻底说明

我们经常在程序中接触十进制、二进制、十六进制、八进制,还有原码、补码、反码、阶码,以及真值等。究竟这些都是一些什么东西,有什么关系?书上个说纷纭,我拍个砖,欢迎指正!!

 

数制:二进制——X进制(X为大于2的任意整数)。

 ps:目前不弄的很复杂,X很大到底是多大我们不管,这些问题留个数学专业的人,姑且认为是一个很大的数,如10000 。

我这样认为:每种数制的一个表示对应着一个唯一的意义。

数制的表示就是:原码、反码、补码、阶码等。

数制对应的唯一的意义就是:它的 真值。

注:关于ISBN为7-03-014622-0的书的第10页说明:把用“+”、“-”号表示数的符号的数据表示形式称为真值。

 

如下面这幅图片:

(图片1)

图片1对应的意义(客观现象)【用10进制来描述】:12个长方形 、 4个菱形、 24个箭头线。

 

对图下面这一副图片:

(图片2)

图片2对应的意义(客观现象)【用10进制来描述】:9个长方形、 1个菱形、 13个箭头线。

 

现在问题来了:对于我们说的(如:12个长方形)这个”12“是什么?是真值?原码?补码?反码?阶码?

我的回答是:真值只是一种意义,一种客观现象的描述或是一个客观过程的描述(就是说是真值代表一种事实),而写出来的数字(无论什么进制),都应该是它的某种编码!

所以,上面的12、4、24、9、1、13都是十进制的某种编码。那么,是什么编码呢?原码 or 补码 or 反码?都不是!!!

那是什么??!!

我的回答是:是被人们简化的真值(一般人们不写这个“+”)。

数字由两部分构成: 符号 + 数值。

对于符号部分:在生活中,符号用+、-表示;而在计算机中,符号由对应进制的某两个数表示(注:不一定是0、1!)。

对于数值部分:在生活中,就是10进制最直观的数(我们一看就知道是什么的数字),而在计算机中,是计算机依赖的那种数制体系表示的。

如果这个计算机是依赖10进制的,那么某个数的10进制原码就是这个数真值最直观的描述!——仅仅改变了符号位的表示方式(-、+变成9、0)!

 

所以我们经常说的数制的转换,应该这样准确的指明:数A是a进制的x码,将它转换成b进制,并且用b进制的y码表示。

 

如果有从A进制的X码到B进制的Y码的直接转换公式就OK了,所有的转换都不再有任何的问题,但。。。

 

但是这不要太困难哦,多项式替代法可以完成任意进制之间的转换,但是当目标进制不是10进制的时候,转换非常的复杂。所以,进制之间的转换应该是下面这样一个过程:

 

 

 

 

像上面这个例子:0XFFEE是被当作16进制的真值来处理的,最后也转换成了8进制的真值(没有写“+”)。

如果上面的0XFFEE是当作C语言里的short处理,如short i = 0XFFEE;那么i所代表的值就不是这个65518了,而是-18 。这就是因为我们看到一个数的时候,首先要确定它是什么进制的什么码的表示形式。

 

ps:改天完成一个进制转换的程序。只考虑常用的这四种进制。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值