ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

进制转化及数据类型

2021-12-27 14:34:39  阅读:189  来源: 互联网

标签:10 1111 0000 进制 16 符号 数据类型 转化


1.进制的表示

进制:进位计数制,10进制,7进制(周),24进制(小时),60进制(分和秒)
十进制:12345.6 == 1*10^4 + 2*10^3 + 3*10^2 + 4*10^1 + 5*10^0 + 6*10^-1  按权重展开相加   
二进制(0~1,共两个符号,前面加一个0):10101 == 1*2^4 + 0*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 16+4+1 = 21
八进制(0~7,共八个符号): 123 == 1*8^2 + 2*8^1 + 3*8^0 == 64+16+3 == 83
十六进制(0~9,a~f/A~F, 一共是16个符号,前面加上0x/0X):1a1 == 1*16^2 + 10*16^1 + 1*16^0 == 256+160+1 == 417 

(下面的整数值全是无符号值,假设下面使用的都是一字节的整数)
第一个问题:其他进制怎么转化成10进制?   按权重展开相加
第二个问题:10进制怎么转化成其他进制?
10进制->2进制:1.基数相除,倒序取余   2.一直凑
100 -> 110 0100
123 -> 0111 1011
234 -> 1110 1010(不考虑正负)
10进制->8进制,16进制的方法(1.先将10进制值转换成2进制,2.再将2进制转换成我们所需要的8进制或16进制)
10进制->8进制(1.将其转换成2进制 2.从右向左,三三分组,左边不够的话补符号位)
100 -> 001 100 100  ->  0144(八进制)
10进制->16进制(1.将其转换成2进制 2.从右向左,四四分组,左边不够的话补符号位)
100 -> 0110 0100 -> 0x64(十六进制)
8进制如何转换16进制:先变成2进制,再转16进制
练习题:
10->8:
    124->001 111 100 ->174
    88 ->001 011 000 ->130
10->16:
    111->0110 1111 -> 6f
    66 ->0100 0010 -> 42

2.整数数据类型和小数数据类型
C语言有哪些基础数据类型:
整型:char(1,迷你的整形值), short(2), int(2/4,默认), long(4), long long(8)


浮点值:float(4) double(8,默认),(long double可以类似当做double处理)
//布尔类型:bool ==  unsigned char
//unsigned(无符号)  signed(有符号)  最高位当做符号位  0表示整数  1表示负数
第一个问题:long和int都是4个字节,为什么设计成两个?

int是2/4(32和64位下区别不同)
第二个问题:编译器为什么给设计出来这么多的内置类型?

让你根据不同的需求去选择不同的数据类型
第三个问题:每一个数据类型的范围大概是多少?
例如:char类型   8个位  能表示的数值可能性有2^8==256种   
如果unsigned char(无符号)的范围是0~255
如果 char(默认有符号)的范围是-128 ~ 127 

3.原码;反码;补码;

原码,反码,补码:最高位当做符号位  0表示正数  1表示负数
无符号整数:按权展开相加
有符号整数:
    正数:原码 == 反码 == 补码
    负数:1.将其绝对值按位取反,得到反码 2.对反码+1得到补码
    -12:0000 1100 -> 1111 0011 -> 1111 0100
    -13:0000 1101 -> 1111 0010 -> 1111 0011
    127:0111 1111 三码合一
    -128:1000 0000 -> 0111 1111 -> 1000 0000
    -1:0000 0001 -> 1111 1110 -> 1111 1111
    -1+1 = 1111 1111 -> 10000 0000 -> 0000 0000
short(2^16==65536   有符号范围为-32768~32767) 
int(2^32==42亿多, 有符号范围为-20E ~ 20E)     

标签:10,1111,0000,进制,16,符号,数据类型,转化
来源: https://blog.csdn.net/heyi3366/article/details/122169060

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有