Advertisement

用补码表示的char变量数值溢出问题

阅读量:

补码和char类型数字溢出

补码概念

在计算机体系中,默认情况下数值是以二进制补码的形式被存储的;这种存储方式中首位二进制位作为符号标志位,在编码时若采用该方式则第一位二进制数字"0"代表正数值而"1"代表负数值。对于char数据类型的存储空间而言,在计算机系统中每个字符占用一个字节的空间资源;每个字符编码单元由八位二进制数组成即从高位到低位依次为变量序列X_0, X_1, ..., X_{7} ,其中第一位变量X_0专门用于表示符号信息

给定补码求原码

当一个数的二进制表示为补码且其sign bit为0时,则其对应的original code与该二进制形式完全一致;具体操作步骤为:在非sign bit的所有bit上执行取反操作,并将结果累加一以获得original code。

举例说明

例题一 :PPT 第二章第17页
将一个int,short,long型数据289赋给一个char型的变量。
由于char型只有一个字节,我们只需要把289的二进制后八位赋值给char型数据就好。
(289)_{(10)}=(100010001)_{(2)}
下标表示进制,括号内代表原始数据。
二进制结果保留后八位,由于符号位为0,结果为正数,因此(00010001)_{(2)}=(33)_{(10)}

!

全部评论 (0)

还没有任何评论哟~