C语言由位数截取的原因所引发的错误

本文介绍不同数据类型所占存储空间及数据范围,并解释原码、反码、补码的概念。通过实例演示了有符号与无符号整数在存储和取出过程中的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在聊二进制的位数截取之前呢我们需要先了解两个知识点,一是数字类型的不同所占的存储空间是不同的,进而导致每个数据类型所能存储的数据范围不同。二是编译过程中计算机原码,反码,补码的转换。

一、常见数据类型的存储空间

1.整数类型

1.1char:占用的内存空间:1字节 8bit;

能存储的数据范围:无符号:[0, 2^8-1],有符号:[-2^7, 2^7-1]

1.2short:占用的内存空间:2字节 16bit;

能存储的数据范围:无符号:[0, 2^16-1],有符号:[-2^15, 2^15-1]

1.3.int:占用的内存空间:4字节 32bit

能存储的数据范围:无符号:[0, 2^32-1],有符号:[-2^31, 2^31-1]

1.4.long:占用的内存空间:8字节 64bit

能存储的数据范围:无符号:[0, 2^64-1],有符号:[-2^63, 2^63-1]

2.浮点类型

浮点型存储涉及到小数的二进制,取得大部分都是近似值,本次不讨论。

3.空类型

 void 叫做空类型,不占用内存空间,一般搭配指针使用,后续再说指针。

 二、原码、反码、补码转换的问题。

1.转化的规则

无符号数:原码、反码、补码 都是一样的

有符号的正数:原码、反码、补码 都是一样的

有符号的负数:反码==原码中符号位不变,其他位按位取反 0变成1 1变成0

2.存储时的不同

存储时看数据(正负),取出时看类型(有无符号)

 三、实例演示

了解完这些问题,咱们通过一些例子去验证一下。

1.正常情况

int main(int argc, const char *argv[])
{
	unsigned char a = 10;
	//存储时
	//原码: 0000 1010
	//反码: 0000 1010
	//补码: 0000 1010
	//取出时
	//补码: 0000 1010
	//反码: 0000 1010
	//原码: 0000 1010 -->10
	printf("a = %d\n", a);//10

	signed char b = -10;
	//存储时
	//原码: 1000 1010
	//反码: 1111 0101
	//补码: 1111 0110
	//取出时
	//补码: 1111 0110
	//反码: 1111 0101
	//原码: 1000 1010 --> -10
	printf("b = %d\n", b);//-10

2.错误情况

	signed char c = 129;
	//存储时
	//原码: 1000 0001
	//反码: 1000 0001
	//补码: 1000 0001
	//取出时
	//补码: 1000 0001
	//反码: 1000 0000
	//原码: 1111 1111 --> -127
	printf("c = %d\n", c);// -127

	unsigned char d = -1;
	//存储时
	//原码: 1000 0001
	//反码: 1111 1110
	//补码: 1111 1111
	//取出时
	//补码: 1111 1111
	//反码: 1111 1111
	//原码: 1111 1111 -->255
	printf("d = %d\n", d);//255

蓝牙4.0BLE(低耗蓝牙)完全开发手册是一本详细介绍蓝牙4.0BLE技术以及其开发的书籍。该手册提供了全面的信息,帮助开发者理解和运用蓝牙4.0BLE技术。 在蓝牙4.0BLE完全开发手册中,首先会对蓝牙技术做简要介绍,包括其发展历史、应用领域和主要特点。接下来会详细讲解蓝牙4.0BLE的原理和架构,以及与传统蓝牙的区别和优势。 然后,手册会深入介绍蓝牙4.0BLE的开发过程。首先是硬件方面,讲解了蓝牙4.0BLE芯片的选择和使用,以及与其他硬件模块的接口和连接。 接着,手册会详细介绍蓝牙4.0BLE的软件开发。从蓝牙协议栈的架构和功能开始,包括扫描、连接、传输和配置等。随后,会讲解关于蓝牙4.0BLE的数据传输和安全性的技术细节,如数据格式、特征值和服务的定义等。 在软件开发的过程中,手册还会介绍一些常见的开发工具和开发环境,包括蓝牙4.0BLE开发板、调试工具和开发软件的配置和操作。 最后,手册还会提供一些实际案例和应用示例,以便开发者更好地理解和运用蓝牙4.0BLE技术。同时,手册也会介绍一些开发中的常见问题和解决方法,以及软件和硬件的调试技巧和注意事项。 总之,蓝牙4.0BLE完全开发手册是一本全面而实用的参考书,适合对蓝牙4.0BLE技术感兴趣的开发者和工程师,能够帮助他们深入理解蓝牙4.0BLE技术,掌握开发过程中的关键技术和实践经验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值