[C语言]-原反补码、整型提升和大小端字节序总结

目录

一、原码反码补码

二、整型提升

三、大小端字节序


一、原码反码补码

计算机中的整数有三种二进制表示方法,即原码、反码和补码。

三种表示方式均有符号位和数值位两部分,符号位用0表示正,用1表示负。

正数的原码、反码和补码都相同。

负整数的三种表达方式存在差异。

原码就是将数值大小转换为二进制数值。

反码就是在原码的基础上符号位不变,数值位取反。

补码就是在反码的基础上+1。

在计算机系统中,对数据处理使用的是补码进行运算,因为使用补码可以将符号位和数值域统一处理。同时,加法和减法也可以统一处理(cpu中只有加法器)。此外,原码和补码可以使用相同的电子线路相互转换,不需要额外的硬件电路。

二、整型提升

整型提升是C程序设计语言中的一项规定:在表达式计算时,各种整型首先要提升为int类型,如果int类型不足以表示则要提升为unsigned int类型;然后执行表达式的运算。

整型提升分为有符号无符号两种。

1.有符号的:整型提升按照变量被截断时的最高位是什么进行补位的,如果截断后最高位(最左端)数字为1,则在前面补够32位1即可。若最高位数字为0,则在前面补够32位0即可。

2.无符号的:直接在被截断的前面补0即可。

整型提升的意义;CPU寄存器对数据进行计算的时候,表达式各种长度可能小于int长度的整型值,都必须转换为int或者unsigned int,然后送入CPU进行计算 。不同的类型提升的方式不同,在计算和编程的时候需要特别注意整型提升的方式。

三、大小端字节序

大端存储模式:是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;

小端存储模式:是指数据的低位保存在内存的低地址中,而数据的低位,保存在内存的地地址中。

 

 

      为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的, 每个地址单元都对应着一个字节,一个字节为8 bit 。
     但是在C语言中除了8 bit的char之外,还有16 bit的short型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值