ToB企服应用市场:ToB评测及商务社交产业平台

标题: C语言【进制、原反补码、数据类型】 [打印本页]

作者: 泉缘泉    时间: 2023-12-22 03:27
标题: C语言【进制、原反补码、数据类型】
C语言【进制、原反补码、数据类型】

1、二进制、八进制、十进制、十六进制在C语言中的使用(赋值及输出)?
  1. /**
  2.         二进制
  3.         赋值时以 0b 或 0B 开头;
  4.         输出时没有所属占位符, 十六进制整数输出也比较直观
  5. */
  6. int num_bin = 0b110;
  7. printf("%d\n", num_bin);        // 以十进制整数形式输出
  8. //其他进制输出形式略,总之就是没有二进制形式的输出
复制代码
  1. /**
  2.         八进制
  3.         赋值时以0(零)开头;
  4.         占位符:%o (小写字母o , 八进制整数)
  5. */
  6. int num_oct = 0123;
  7. printf("%o\n", num_oct);        // 以八进制整数形式输出
复制代码
  1. /**
  2.         十进制
  3.         赋值时正常表示
  4.         占位符:%d 表示输出形式为十进制整数
  5. */
  6. int num_deci = 123456;
  7. printf("%d\n", num_deci);
复制代码
  1. /**
  2.         十六进制
  3.         以0x或0X开头
  4.         占位符: %x     输出十六进制整数(A-F输出为小写)
  5.                    %X     输出十六进制整数(A-F输出为大写)
  6.                %#x    输出0x样式十六进制整数
  7.                    %#X    输出0X样式十六进制整数
  8. */
  9. int num_hex = 0xff;
  10. printf("%x\n", num_hex);
  11. printf("%#x\n", num_hex);
  12. printf("%#X\n", num_hex);
复制代码
拓展问题:有没有浮点类型二/八/十六进制的数的展示 ?输出呢?
似乎有,似乎用处不大。来一段:
  1. float hex_float = 0x1P3;
  2. printf("hex_float = %f\n", hex_float);  // 输出为 hex_float = 8.000000
复制代码
在这里,0x1P3是一种用科学计数法表示十六进制浮点数的方式。在这个例子中,1P3表示1乘以2的3次方,也就是8。
2、进制转换略。   遗留问题: 浮点数的进制转换?

3、机器数指一个数在计算机中存储的二进制原样;真值指按规则编码后表示的值,比如1001这个二进制数,如果把最高位的1表示为符号位,则其真值为-1。

4、原反补码是什么及各自的转换。

5、基本数据类型

6、数据类型转换

​                浮点转整型有可能出现溢出(如果整数很大)或者 精度缺失
7、sizeof(...)的使用,格式占位符,返回的类型等。

sizeof(类型/变量名/字面量/表达式)
如果不是查看 类型或表达式 的大小,可以使用 sizeof 变量名/字面量
占位符为 %zu    或   %d
返回类型为size_t,根据系统决定实际类型。
返回类型的字节个数,如果查看某个字面量的字节占用个数,查的是它默认的使用类型字节数。
8、补充

1.   转义字符

\b 退格;  \n  换行符; \r  回车符;  \t  制表符;  \加单双引号或斜杠在特殊情况下转义为它们本身等
2.    C语言中非0即为真,-1也是真。

3.    和  提供的类型,略。
  1. #include<stdio.h>
  2. #include<stdint.h>
  3. // 精确宽度整数类型
  4. // 64位,很多计算机底层为long long  , %d 输出会数值错乱
  5. int64_t e1 = 4500000000;   
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4