我们判度一个数字类型(char,short,int,float,double等数据类型的统称)的MSB位的意义所在区分数字的正/负,通过下面的图,这是我以前写过的《C/C++ 内存中的数据表示》用过的一个图例,通过它能够说明很多意义所在。

  • 若MSB为0,并且你在声明该数字的变量类型以signed前缀定义,C/C++编译器解析表示该数字为
  • 若MSB为1,并且你在声明该数字的变量类型以signed前缀定义,C/C++编译器解析表示该数字为

我们使用位与运算符 “&”检查任何位的状态。 如果操作数的对应位为1,则位与运算会将结果值的每一位返回1。

  1. 我们将被检测的数字m,它的类型为T,使用sizeof()运算符可找到该数字的类型T的大小(以字节为单位)。 然后将其乘以8,即可得到数字T所需的位数。 将总位存储在某个变量中,例如
bits = sizeof(T)* 8

  • 要获取数字的MSB位,需要将1的第一位移到最高位。 左移bits-1那么多次,并将结果存储在某个变量中,例如
msb = 1 <<(bits-1)

  • 如果数字m&msb按位与运算,如果求值为1,则设置数字m是负数,否则是负数。
m & msb ? "m是负数":"m是非负数";

示例代码

template <typename T>
#define BITS sizeof(T) * 8
bool is_negative_numeric(T m)
{T msb;msb = 1 << (BITS - 1);return m & msb ? true : false;
}int main(int argc, char const *argv[])
{std::vector<int> vc{11, -245, -738, 112, 0, -45, 33, 77, -44};for (size_t i = 0; i < vc.size(); i++){is_negative_numeric<int>(vc[i]) ? std::cout << "负数"<< ",": std::cout << "非负数"<< ",";}return 0;
}

测试结果

c bool 类型检查_第3篇:C/C++ 检查数字类型的最高有效位(MSB)相关推荐

  1. python提供数字类型包括_Python 语言提供的 3 个基本数字类型是( )_学小易找答案...

    [论述题]请以<我的爸爸妈妈>为题,写一篇作文,向大家介绍自己的爸爸和妈妈. [单选题]初孕妇,妊娠34周,血液检查中下列描述不符合正常妊娠生理特点的是( ) [填空题]汽缸垫的作用是保证 ...

  2. python提供了几个基本的数值运算操作符_慢步学习,二级python,数字类型及其运算...

    #我要学Python# 记得曾经的老师常说,要带着问题学习. 咱继续带着二级Python编程语言的考试大纲学习. 考试大纲中考试内容分七部分,其中第一部分Python 语言基本语法元素已经学完.笔者认 ...

  3. java负数用什么类型定义_(转) Java中的负数及基本类型的转型详解

    (转) https://my.oschina.net/joymufeng/blog/139952 面这行代码的输出是什么? 下面两行代码的输出相同吗? 请尝试在Eclipse中运行上面的两个代码片段, ...

  4. accdb 用户类型未定义_Python早期设计与开发:数字类型的设计缺陷

    本系列文章译自Python之父 Guido van Rossum 的系列博客"The History of Python".这个博客系列对我们理解Python及其演变很有帮助,经G ...

  5. python数值类型教程_数据类型详细篇:数值

    数据类型详细篇:数值 Python 的数值可以表示三种类型的数据: 整数 :可以表示正数,例如 123:可以表示负数,例如 123:使用 0 表示零. 浮点数:浮点数由整数部分与小数部分组成,例如 1 ...

  6. java 图片检查_使用JAVA如何对图片进行格式检查以及安全检查处理

    一.通常情况下,验证一个文件是否图片,可以通过以下三种方式: 1).判断文件的扩展名是否是要求的图片扩展名 这种判断是用得比较多的一种方式,不过这种方式非常的不妥,别人稍微的把一个不是图片的文件的扩展 ...

  7. python中内置的四种数值类型为_浅谈python语言四种数值类型

    Python语言支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下.希望对 ...

  8. 目前最常用的计算机机箱类型为_服务器按照结构划分有几种类型

    塔式服务器 一般的塔式服务器机箱和我们常用的家庭电脑主机机箱差不多,大型的塔式机箱就要比家用的主机大很多.直接摆放机房. 机架式服务器 形成的以19英寸机架作为标准宽度的服务器类型,高度则从1U到数U ...

  9. Python数据类型(一)数字类型

    Python3有六个标准数据类型: .不可变数据类型:Number(数字).String(字符串).Tuple(元组) .可变数据类型: List(列表).Dictionary(字典).Set(集合) ...

  10. Python基本类型之数字类型,字符串

    目录 一.数字类型 1.int(整数) 2.float(浮点数) 3.bool(布尔类型) 4.comple(复数类型) 5.数字类型的相互交换 5.1隐式类型 5.2显示类型的转换 二.字符串 1. ...

最新文章

  1. 鸿蒙2.0 安卓,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪
  2. MySQL—04—MySQL的其他对象
  3. mybatis实现自定义SQL并且请求参数是集合
  4. 中南民族大学计算机图像处理实验报告,中南民族大学数字图像处理程序及图像...
  5. s:iterator标签的使用
  6. sprintf()--字串格式化命令
  7. 10.卷1(套接字联网API)---SCTP 客户/服务器程序例子
  8. httpclient下载图片或者其他文件
  9. C语言函数 思维导图
  10. excel如何取消合并单元格并自动填充
  11. java 磁力下载工具_它可能是现在最好用的磁力下载工具
  12. 小米摄像头 rtmp_如何使用外部摄像头进行Amazon Live
  13. 群晖 docker 版 transmission 安装 Web UI
  14. 【HTTP】Fiddler(二) - 使用Fiddler做抓包分析
  15. opencv形态学-开操作和闭操作
  16. python去掉字典重复项_从字典列表中删除重复项python
  17. 洛谷 P2708 硬币翻转 题解
  18. matlab求解非线性常微分方程组,Matlab数值求解非线性常微分方程 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  19. WebService应用通信
  20. 网络篇 - https协议中的数据是否需要二次加密

热门文章

  1. Imagick 处理gif psd格式
  2. 如何修改Myeclipse的JSP模板
  3. 分享过滤条件中增加一个自定义过滤变量插件代码
  4. MySql 中文乱码问题
  5. 20.UNIX 环境高级编程--数据库函数库
  6. 9. explain
  7. Migrations有两个文件迁移数据的方法
  8. vue-cli webpack浅析
  9. 计算机软件编程英语词汇集锦
  10. FPGA实现“打字机”(VGA UART)