20150526数据编码
来源:互联网 发布:datagridview绑定数据 编辑:程序博客网 时间:2024/05/22 03:21
//
// main.c
// iOS150526
// 数据编码
// Created bypengjunlong on 15/5/26.
// Copyright (c) 2015年 pengjunlong. All rights reserved.
//
//注释代码的方式:#if 判断条件 ... #endif
#include <stdio.h>
// *****************
// * *
// * 数据编码 *
// * *
// *****************
/*
8bits = 1Byte
char类型:1字节
有符号数据类型:最高位作为符号位,高位为1表示负数,最高位为0表示正数
char表示的数据范围:-128~127
6 = 0b00000110
-6 = 0b10000110
原码:最高位为符号位,其余位表示绝对值大小
5+6 = 11
00000101
+ 00000110
--------
00001011 11
-5-6 = -11
10000101
+10000110
-------
1 00001011 = 11
原码不能进行减法运算(可以进行加法运算),符号位也参与运算,得到的值和实际的值不相等,计算机不能以原码的方式存储数据,高位符号位溢出。
反码:
反码:对于正数来说它的反码就是原码,对于负数,符号不变,其余位逐位取反。
-8 = 10001000(原码)->11110111(反码)+1->11111000(补码)
-12 = 10001100->11110011+1->11110100
-20 = 10010100->11101011+1->11101100
-5-6 = -11
-5:原码:10000101 反码:11111010
-6:原码:10000110 反码:11111001
11111010
+ 11111001
-------
1 11110011 ->0b10001100 = -12+1 = -11
反码转原码:对反码再进行一次取反;可以将进位1加到低位上去,反码就能得到正确运算结果。
反码进行运算的时候,一个正数和一个负数进行运算时结果可能正确,但两个负数进行运算时不正确。
0的表示不唯一:
+0:00000000
-0:10000000
故反码不能用来存储数据。
补码:
正数的补码就是它的原码,负数的补码是在反码的基础上加1
原码 反码 补码
-9 10001001 11110110 11110111
-24 10011000 11100111 11101000
-7 10000111 11111000 11111001
-5-6 = -11
-5:原码:10000101 反码:11111010 补码:11111011
-6:原码:10000110 反码:11111001 补码:11111010
11111011
+ 11111010
------
1 11110101 ->10001010+1->10001011=-11
补码转原码:对补码再求一次补码
00000000
10000000=-128
高位的1既表示符号又表示绝对值大小
计算机采用补码的方式存储数据。
*/
// *****************
// * *
// * 基本数据类型 *
// * *
// *****************
/*
数据类型决定了变量或则常量占用的内存空间大小
整型:char short int long long long
浮点型:float double long double
64位平台数据类型长度:
char = 1
int = 4
short = 2
long = 8
long long = 8
float = 4
double = 8
long double = 16
32位平台数据类型长度:
char = 1
int = 4
short = 2
long = 4
long long = 8
*/
void lengthOfDataType();
void lengthOfFloatDataType();
int main(int argc, const char * argv[]) {
// insert code here...
printf("char = %ld\n",sizeof(char)); //sizeof运算符求变量或者常量占用的内存空间大小
printf("int = %ld\n",sizeof(int));
printf("short = %ld\n",sizeof(short));
printf("long = %ld\n",sizeof(long));
printf("long long = %ld\n",sizeof(long long));
lengthOfDataType();
lengthOfFloatDataType();
return 0;
}
//整型数据类型的取值范围
void lengthOfDataType()
{
char a = 0x7f;
char b = 0x80;
printf("char: max = %d,min = %d\n",a,b); //%d可以打印char,short,int类型数据。(比int类型范围小的)
short c = 0x7fff;
short d = 0x8000;
printf("short: max = %d,min = %d\n",c,d);
printf("int: max = %d,min = %d\n",0x7fffffff,0x80000000);
printf("long: max = %ld,min = %ld\n",0x7fffffffffffffff,0x8000000000000000);//%ld打印long类型数据
long long l = 123456;
printf("long long:%lld\n",l); //%lld打印long long类型数据
//无符号取值范围 unsigned int
printf("%u\n",0xffffffff);
}
//浮点型数据类型的取值范围
void lengthOfFloatDataType()
{
printf("float = %ld\n",sizeof(float));
printf("double = %ld\n",sizeof(double));
printf("long double = %ld\n",sizeof(long double));
/*
1.常用方法:2.33 1232.342
2.指数法:2.345e2 = 234.5
*/
printf("%f\n",2.345e2);// 指数法
printf("%f\n",2.33);
/*
float 4字节
234.5 0.2345e3
存储模型:符号位(1bit) | 小数位(23bit)| 指数位(8bit)
float 精度6~7位
double 精度15~16位
*/
float f1 = 3.23456789006545;
printf("f = %f\n",f1);
printf("f = %.14f\n",f1);
double f2 = 3.23456789006545234524463;
printf("f = %f\n",f2);
printf("f = %.20f\n",f2);
}
// *****************
// * *
// * 标准输入输出 *
// * *
// *****************
void stdInputOut()
{
int num;
scanf("%d",&num); //从标准输入文件中读取数据到内存中 stdin
printf("num = %d",num); //把内容写入到标准输出文件中 stdout stderror
}
- 20150526数据编码
- 20150526数据编码_练习
- 数据编码
- mysqldump数据编码问题
- 数据的编码表示
- 数据编码技术
- 最新行政区划编码数据
- Protobuf数据编码规则
- Google-ProtoBuf数据编码
- 数据输出编码格式
- Php socket数据编码
- 数值数据编码
- Protobuf数据编码规则
- RFID之数据编码
- 文本文件数据编码
- 数据及编码问题
- 数据分组-重新编码
- 图像数据base64编码
- 如何进行Android客户端的优化?
- STM32M4_HSI_CLK
- Cpp Primer<<学习IO标准库--输出缓冲区的管理、文件输入与输出_6
- 第十四周 阅读程序二
- 集锦
- 20150526数据编码
- 【hadoop】5002-Hadoop2.x 集群搭建准备
- Yii2 使用十七 国际化
- Python中zip()函数用法举例
- apue.h: No such file or directory
- Android控件整理
- OpenCV+Android开发配置
- UVA11991--Easy Problem from Rujia Liu?
- 32位和64位各变量字节数