C语言加强学习营(二):定义整型的最大值和最小值
示例
#include <stdio.h>
#include <stdint.h>int main(int argc, char **argv)
{uint8_t uint8_max = ~(uint8_t)0; /*!< 定义无符号字符型型的最大值 */int8_t int8_max = (int8_t)((uint8_t)(~1) >> 1); /*!< 定义有符号字符型的最大值 */uint32_t uint32_max = ~(uint32_t)0;int32_t int32_max = (int32_t)((uint32_t)(~1) >> 1);int8_t int8_min = ~int8_max;printf("Min of int8_t is 0x%X - %d\n", int8_min, int8_min);printf("Max of int8_t is 0x%X - %d\n",int8_max, int8_max);printf("Max of uint8_t is 0x%X - %u\n",uint8_max, uint8_max);printf("Max of int32_t is 0x%X - %d\n", int32_max, int32_max);printf("Max of uint32_t is 0x%X - %u\n", uint32_max, uint32_max);
}
root@seven:~/workspace/test/16.values# gcc value.c
root@seven:~/workspace/test/16.values# ./a.out
Min of int8_t is 0xFFFFFF80 - -128
Max of int8_t is 0x7F - 127
Max of uint8_t is 0xFF - 255
Max of int32_t is 0x7FFFFFFF - 2147483647
Max of uint32_t is 0xFFFFFFFF - 4294967295
解析
最大值
对于无符号整型数据,最大值即为每位
都是1
,所有可以使用位操作运算符~
(位非): <unsigned type> max = ~(<unsigned type>)0;
对于有符号整型数据,最大值为符号位为0
,其他位都为1
: <signed type> max = (<signed type>)((<unsigned type)(~1) >> 1);
,先取反,然后使用除2
或者右移一位的方式时最高位(符号位)为0
(正数),即得到有符号型数据最大值。
最小值
对于无符号整型数据,最小值即为0
;
对于有符号整型数据,最小值为能表示的最小负数,由于负数编码为补码表示,故最小值符号位为1
(负号),其他位全为0
: <signed type> min = ~(max);
——生活不会放弃你,但也不会放过你。
C语言加强学习营(二):定义整型的最大值和最小值相关推荐
- C语言(二)— 整型
编程进阶- C语言(二)- 整型 整型 在C语言中,整型数据一般用short.int.long三种数据类型来声明,int是C语言中常用的声明整形数据的数据类型,在现代的操作系统中,一般是占4字节(By ...
- (C语言)二维整型数组的“最大点”(驻点)
[问题描述] 求二维整型数组的"最大点".二维数组的"最大点"定义为:某个数是所在行的最大值,并且是所在列的最大值.注意:某行或某列上可能有多个"最大 ...
- 我的Go+语言初体验——(6)整型有理数数据类型
我的Go+语言初体验--(6)整型有理数数据类型 "我的Go+语言初体验" | 征文活动进行中- Go+ 语言使用后缀 'r' 表示有理数,支持整型.分数型.浮点型三种有理数数据类 ...
- C#语言中提供了枚举和整型之间的强制转换功能(SelectItem)
[csharp] view plain copy <span style="font-family: Arial, Helvetica, sans-serif;"> ...
- c语言赋值小数,c语言中将一个浮点型赋值给整型时,会不会四舍五入?
c语言中将一个浮点型赋值给整型时,不会四舍五入,会直接舍去小数部分的数据,也可以认为是执行了下取整运算. 将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分,只保留整数部分.将整型值赋给浮点型变 ...
- 定义整型数组_C语言基础-数组怎么用
到目前为止,我们了解到C语言中可以使用整型,浮点型和字符型的数据类型来描述我们人类世界的各种数据,但是这些还远远不够-- 我们在IOT领域经常会遇到这样一个数据使用场景:某天的固定时间内,会有多台(我 ...
- 定义整型数组_C++数组的定义与初始化(学习笔记:第6章 01)
数组的定义与使用[1] 数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素. 数组的定义 方括号里面列出的常量表达式是数组每一维的下标个数.数组的下标不管从哪一维它都是从 ...
- lua语言入门学习(二)lua语言的特点及注意事项
lua语言入门学习 lua语言的特点及注意事项 文章目录 lua语言入门学习 lua语言的学习地址 一.lua语言特点 1.注释 2.全局变量和局部变量 3.lua数据类型 4.字符串类型 5.多变量 ...
- C语言基本数据类型笔记整理(整型、实型/浮点型、字符型、枚举型、构造类型、指针类型、空类型)
C语言基本数据类型 一.整型 ①有符号整型 ②无符号整型 二.实型 三.字符型 四.枚举型 五.构造类型 ①数组 ②结构体 ③共用体 六.指针类型 七.空类型 一.整型 ①有符号整型 有符号整型 关键 ...
最新文章
- PCB天线无线模组如何布局摆放?
- 一帖搞定U盘系统制作及安装苹果mac os引导U盘安装windows7
- OpenGL编程指南14:混合半透明Blend
- java字段不序列化注解_@Transient注解的使用(不被序列化和作为临时变量存储)...
- UVA571 - Jugs(数论)
- 好用的shell_Linux系统安全 | Linux中的Shell和Bash
- phpStudy配置站点 解决You don't have permission to access / on this server
- In Depth和In Action的区别——写在《深入理解C#(第二版)》出版之际
- 开课吧课堂:人工智能对金融行业的影响
- AssetPostprocessor.OnPreprocessModel
- 红帽rhce考试自带补考吗_红帽RHCE认证考试注意事项
- 使用Keras-yolov3来识别滑动验证码
- 如何开始做股票量化交易?
- 直播app系统源码,自定义弹框的简单写法Demo
- JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@xxx] will not be managed by Spring
- win11如何切换输入法 win11快速切换输入法
- ACP知识域四---团队绩效
- 怎么使用软件操作将桌面上CAD转换为黑色背景WMF格式?
- 蓝桥杯单片机led指示
- Guns 第4节 用Guns开发