CSAPP 2-2 整数的表示和运算
目录
1 整数表示编码整数有2种方式: 一种只能表示非负数(大于0的数),另一种能够表示负数、零和正数. (1) 整型数据类型: C和C++都支持有符号(默认)和无符号数,Java只支持有符号数. (2) 无符号数的编码: 无符号数的二进制表示又一个很重要的属性:
(3) 补码编码: 最常见的 有符号数 的计算机表示方式就是 补码(two‘s-complement) 形式: 字的最高有效位当作负权(negative weight),也就是符号位. 与无符号表示一样,在可表示的取值范围内的每个数字都由一个唯一的w位的补码编码 —— 补码编码的唯一性. 有2个注意的细节:
C语言标准并没有要求要用补码形式来表示有符号整数,但是几乎所有的机器都是这么做的.
(4) 有符号数和无符号数之间的转换: C语言允许在各种不同的数字数据类型之间做强制类型转换. 对大多数C语言的实现,处理同样字长的有符号数和无符号数之间相互转换的一般规则: 数值可能会改变,低层存储数值的位模式不会变. (5) C语言中的有符号数和无符号数 大多数数字都默认是有符号的,要创建一个无符号数,必须加上后缀字符‘U’或者‘u’,例如: 12345U,或者0x1A2Bu.
未完待续... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |