C语言 数据编码方式
2024-10-21 13:05:27
一、整形数据类型
1.无符号数的编码
无符号数指的是整个机器字长的全部位数均表示数值位。
我们用函数 来进行运算。(B2U是Binary to Unsigned的缩写,长度为w),x代表为0或1
如
2.补码编码
想要对有符号数进行编码,目前主要采用补码编码(原码和反码编码在0的表示上做不到统一)
我们用函数来进行运算。(B2T是Binary to two's-complement的缩写)
从这里很容易知道w位补码能表示值的范围,明显不同于无符号数编码的是在于最高有效位被设置为符号位,值为1时表示为负数,0则为非负数
欲得到w位补码最小值,只需要[10000...]固定首位为1,剩余位为0,也就是其整数值为
最大值则为[01111...],其整数值为
如果是4位补码,那么依据上述公式,显然最小值为-8,而最大值为7,你会注意到一件事情,补码的范围是不对称的,这是因为我们将首位1设置为负数,首位0为非负数,因为数字0是非负数,也就意味着能表示的正数比负数少了一个(0占去了一个位置)。
第二件你会注意到的事情是,无符号数在相同位数下能表示的最大值恰好是符号数表示的最大数的两倍多1。比如4位无符号数编码最大值为15=2*7+1。
二、有符号数和无符号数间的转换
1.T2U
我们有公式
例如:
2.U2T
我们有公式
例如:
最新文章
- 用javascript写星际飞机大战游戏
- UIWebView中加载HTML的Table,td设置百分比宽度并且宽度不被里面的内容撑开
- 解决Oracle在scott用户下创建视图(VIEW)权限不足的方法
- DevExpress.XtraGrid winform试用分享
- Java——函数
- mac 10.8 编译提示找不到GCC
- Linux TCP队列相关参数的总结 转
- ANDROID_MARS学习笔记_S03_009_GOOGLEMAP3
- Spring Data MongoDB example with Spring MVC 3.2
- Android系统提供了哪些东西,供我们可以开发出优秀的应用程序
- 基于jQuery的前端如何做到无伤迁移
- 对手机SD卡的一些操作
- Android GridView增加HeaderView和FooterView的实现
- ESB 设计
- Myeclipse 创建 Web Maven项目
- RabbitMQ是如何运转的?
- Python全栈开发之---mysql数据库
- tensorflow---alexnet training (tflearn)
- seo一些相关内容
- js代码实现购物车效果