一、 数据的存储原理
a) 数据在计算机中以二进制形式存储。
b) 每个二极管只有两种状态:“导”,“截止”。
c)
二、 数据的存储单位
a) 位:又称“比特(bit)”,每个二极管元件称为一个“二进制位”,是存储信息的最小单位,值为0或1.
b) 字节:又称“拜特”。8个“二进制位”组成一组,称为“字节”,即:1 byte=8bit
c) 地址:操作系统把所有存储单元以字节为单位编号。
三、 数据进制之间的转换
a) 十进制—>二进制:
15
2 7 1
2 3 1
2 1 1
2 0 1
那么十进制15的二进制为:1111,因为32位整型int的长度是8位,所以前面补四个零,即:00001111
24
2 12 0
2 6 0
2 3 0
2 1 1
0
b) 二进制—>十进制
10---2:把20转换成二进制
20/2=10..........余数为0
10/2=5...........余数为0
5/2=2............余数为1
2/2=1............余数为0
1/2=0............余数为1
则20换成二进制后是10100
10---8:把20转换成八进制
20/8=2...........余数为4
2/8=0............余数为2
则20转换成八进制后是24
10---16:把20转换成十六进制
20/16=1..........余数为4
1/16=0...........余数为1
则20转换成十六进制后是14
2---10:把二进制数1101转换成十进制
1101=1*2的0次方+0*2的1次方+1*2的2次方+1*2的3次方=13
则1101变成十进制后是13
8---10:把八进制数1340转换成十进制
1340=0*8的0次方+4*8的1次方+3*8的2次方+1*8的3次方=736
则1340变成十进制后是736
16---10:把十六进制数3A4F转换成十进制
3A4F=15*16的0次方+4*16的1次方+10*16的2次方+3*16的3次方=14927
(十六进制中的A是10,F是15)
二进制与八进制的相互转换:
八进制数 0 1 2 3 4 5 6 7
二进制数 000 001 010 011 100 101 110 111
二进制与十六进制的相互转换:
十六进制 0 1 2 3 4 5 6 7 B
二进制数 0000 0001 0010 0011 0100 0101 0110 0111 1011
c) 转换成二进制的就除以2,转换成八进制的就除以8,转换成十六进制的就除以16,然后倒取余数。
四、 sizeof
使用sizeof求存储大小,指针变量为8,数组为数组长度,字符串为实际占用大小加\0后的大小。
五、 关于size_t的解释[部分内容参见于百度知道http://baike.baidu.com/view/3236587.htm]
size_t 类型定义在cstddef头文件中,该文件是C标准库的头文件stddef.h的C++版。它是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小。
例如:bitset的size操作返回bitset对象中二进制位中的个数,返回值类型是size_t。
例如:在用下标访问元素时,vector使用vector::size_type作为下标类型,而数组下标的正确类型则是size_t
size_t是标准C库中定义的,应为unsigned int,在64位系统中为 long unsigned int。
数据类型"socklen_t"和int应该具有相同的长度,否则就会破坏 BSD套接字层的填充。POSIX开始的时候用的是size_t, LinusTorvalds(他希望有更多的人,但显然不是很多) 努力向他们解释使用size_t是完全错误的,因为在64位结构中 size_t和int的长度是不一样的,而这个参数的长度必须和int一致,因为这是BSD套接字接口标准。最终POSIX的那帮家伙找到了解决的办法,那就是创造了一个新的类型"socklen_t"。Linus Torvalds说这是由于他们发现了自己的错误但又不好意思向大家伙儿承认,所以另外创造了一个新的数据类型 。
实现方式
在C++中,设计 size_t 就是为了适应多个平台的 。size_t的引入增强了程序在不同平台上的可移植性。size_t是针对系统定制的一种数据类型,一般是整型,因为C/C++标准只定义一最低的位数,而不是必需的固定位数。而且在内存里,对数的高位对齐存储还是低位对齐存储各系统都不一样。为了提高代码的可移植性,就有必要定义这样的数据类型。一般这种类型都会定义到它具体占几位内存等。当然,有些是编译器或系统已经给定义好的。经测试发现,在32位系统中size_t是4字节的,而在64位系统中,size_t是8字节的,这样利用该类型可以增强程序的可移植性。
使用
一个基本的无符号整数的C / C + +类型, 它是sizeof操作符返回的结果类型, 该类型的大小是选择。因此,它可以存储在理论上是可能的任何类型的数组的最大大小。 换句话说,一个指针可以被安全地放进为size_t类型(一个例外是类的函数指针,但是这是一个特殊的情况下)。 size_t类型通常用于循环、数组索引、大小的存储和地址运算。 虽然size_t可以存储一个指针,它的目的是更好地使用另一个unsinged整数类型uintptr_t形式。 在某些情况下,使用size_t类型是更为有效,比习惯性使用无符号类型的程序员更安全。
size_t是在基于无符号整数memsize类型的C / C + +的标准库中定义的。 C语言中,此类型位于头文件stddef.h中,而在C++中,则位于cstddef中。
分享到:
相关推荐
本文将基于标题“进制转换C源码”和描述,深入探讨C语言实现不同进制转换的原理及代码实现,同时会涉及与Java语言进制转换差异的讨论。 首先,进制转换是计算机科学中的基本概念,主要包括二进制、八进制、十进制和...
在编程领域,尤其是在嵌入式系统和通讯领域,数据类型的进制转换是一项基本且重要的技能。LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是美国国家仪器公司开发的一种图形化编程语言,广泛应用于...
综上所述,"基于单片机(AT89C51)的进制转换及进制计算器"项目涵盖了单片机原理、进制转换算法、程序设计、硬件接口设计等多个方面的知识。通过这个项目,开发者不仅可以提升单片机编程技能,还能深入理解进制转换的...
例如,他们可能需要将接收到的串口数据转换为10进制,或者将存储在EEPROM中的配置参数从十六进制转换为二进制以便处理。 总结来说,这个STM32数据进制转换程序是嵌入式开发中的实用工具,通过其高效的算法和良好的...
- 数据解析:在读取或写入二进制文件时,需要进行进制转换。 - 网络通信:网络协议中的数据常以十六进制表示,转换是必不可少的步骤。 - 用户界面:在用户界面中显示或接收用户输入的数值时,可能需要进行进制...
在进制转换中,我们可以利用栈的数据结构特性来存储每次除法得到的余数,最后再将这些余数逆序输出,从而得到转换后的结果。 #### 进制转换算法的设计与实现 根据题目描述,我们使用顺序栈来实现进制转换。具体...
在计算机科学中,最小的数据单位是位(bit),它是计算机内部的基本存储单位,一个位可以存储0或1两个值。一个字节(byte)等于8个位,1KB等于1024B,1MB等于1024KB,1GB等于1024MB,1TB等于1024GB。 二、进制数的...
本文将深入探讨如何使用C++语言实现任意进制转换,特别是涉及到小数部分的处理,并结合数据结构中的栈和队列进行阐述。C++作为一门强大的静态类型语言,其丰富的库支持和高效性能使得它成为实现这种算法的理想选择。...
数据二进制转换器是一种非常实用的工具,它主要用于将我们日常生活中常用的数据类型转换为二进制形式。在计算机科学和信息技术领域,二进制是所有计算的基础,因为计算机内部只能理解和处理二进制数据,即由0和1组成...
在IT领域,进制转换是一项基础且至关重要的技能,它涉及到计算机科学的多个方面,如数据存储、计算、编码和通信。本工具专注于二进制、八进制、十进制和十六进制之间的转换,这些是计算机系统中最常见的数字表示形式...
二进制与十进制转换PPT学习教案 一、十进制系统 十进制系统是一种基于10的...本PPT学习教案总结了十进制与二进制的概念、进制转换的方法、数据存储单位等基础知识,为学习计算机科学的学生提供了有价值的参考资料。
### 数据结构实验报告:栈进制转换 #### 实验背景 本实验报告旨在通过实现一个基于栈的数据结构来完成不同进制之间的转换,具体是从十进制转换为其他任意进制。通过本次实验,学生能够深入理解栈这一抽象数据类型...
1. 编程:在编程中,理解并掌握进制转换对于处理位运算、数据存储和网络协议至关重要。例如,IP地址通常用点分十进制表示,但实质上是32位二进制数。 2. 计算机硬件:计算机内部所有的计算都是以二进制进行的,因此...
- `App.config`文件用于存储应用程序配置信息,可能包含了关于程序设置或进制转换的配置项。 - `进制转换.csproj`是项目的配置文件,定义了项目依赖、编译选项等。 - `Form1.resx`存储了窗体的本地化资源,如控件...
在IT领域,GPS(全球定位系统)进制转换工具是一种非常实用的软件工具,它主要用于处理与GPS数据相关的编码和解码过程。GPS系统在传递地理位置信息时,常常使用特定的进制表示方式,比如十进制、二进制、十六进制等...
数值系统中常见的有二进制(base-2)、八进制(base-8)、十进制(base-10)和十六进制(base-16),这些进制系统各有其用途,二进制是计算机处理数据的基础,八进制和十六进制则常用于计算机编程和数据存储领域,十...
例如,二进制(Base-2)主要用于计算机内部数据存储和处理,八进制(Base-8)和十六进制(Base-16)则常用于简化二进制表示,尤其是在编程和调试过程中。 任意进制转换的核心在于理解不同进制之间的转换规则。例如...
进制转换是计算机科学的基础,理解不同进制之间的转换对于学习和使用计算机系统至关重要。这里主要探讨的是二进制和十进制之间的...无论是学习计算机硬件、软件开发还是数据分析,掌握进制转换都是基础且重要的技能。
对于“门禁卡进制转换校验计算器”,它很可能是结合了上述功能的工具,能够帮助用户进行IC卡数据的进制转换,并对转换后的数据进行校验计算,以确保数据的正确性。用户可能需要输入IC卡原始的二进制或十六进制数据,...
这些进制转换在编程、数据存储、硬件设计等多个IT领域都有广泛应用。 二进制系统由0和1两个符号组成,是最基本的数字表示方式,计算机内部所有的数据和指令都是以二进制形式存在的。八进制系统基于8,由0到7这八个...