shuchuan的个人博客分享 http://blog.sciencenet.cn/u/shuchuan

博文

闲得蛋疼2

已有 448 次阅读 2019-4-22 13:25 |个人分类:杂学|系统分类:科研笔记

一、机器数和真值

1、机器数

一个数在计算机中的二进制表现形式,叫做这个数的机器数。

机器数是带符号的,在计算机中用一个数的最高位来存放符号,正数为0,负数为1。

比如,十进制中的数+3,通常情况下计算机中的字长为8位,那么转换成二进制就是00000011;如果是-3,那么转换成的二进制数就是10000011。这里的00000011和10000011就是机器数。

2、真值

因为二进制数中的第一位是符号位,所以机器数的形式值就不等于真正的数值。

例如上面的有符号数10000011,其最高位1代表负,其真正数值是-3,而不是形式值131(10000011转换成十进制等于131)。

所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。如:00000001的真值=+0000001=+1,10000001的真值=-0000001=-1。

二、原码、反码和补码

对于一个数,计算机要使用一定的编码方式进行存储,而原码、反码和补码就是机器存储一个具体数字的编码方式。

1、原码

原码就是符号位加上真值的绝对值,即用第一位表示符号,其余为表示值。

比如,如果是8位的二进制数:[+1]原=00000001、[-1]原=10000001。

因为第一位是符号位,所以8位二进制数的取值范围为:[11111111,01111111],转换成十进制就是[-127,127]。

原码是人脑最容易理解和计算的表示方式。

2、反码

正数的反码是其本身;负数的反码是在其原码的基础上,符号位不变,其余各位取反。

比如,[+1]=[00000001]原=[00000001]反;[-1]=[10000001]原=[11111110]反。

显然,如果一个反码表示的是负数,人脑是无法直观地看出来它的数值,通常需要将其转换成原码再计算。

3、补码

正数的补码是其本身;负数的补码是在其原码的基础上,符号位不变,其余各位取反,再加1(其实就是在反码的基础上+1)。

[+1]=[00000001]原=[00000001]反=[00000001]补;[-1]=[10000001]原=[11111111]补。

对于负数,补码的表示方式也是人脑无法直观看出其数值的,通常也需要转换成原码再计算其数值。




http://blog.sciencenet.cn/blog-3265439-1174846.html

上一篇:闲得蛋疼1
下一篇:认识函数ismember

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备14006957 )

GMT+8, 2019-10-24 02:09

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部