用位运算实现有符号16bit数据clamp
在处理16 bit数据时,时常要将其他类型数据固定在16bit。
通常来说,在C语言中用一个if或者三目运算符就可以完成这个功能:
#define Limit16(a) ((a) > 0x7FFF ? 0x7FFF : ((a) < -0x8000 ? -0x8000 : (a)))
用位运算也可以巧妙实现此功能:
short clamp16(int sample)
{if ((sample >> 15) ^ (sample >> 31)) {sample = 0x7FFF ^ (sample >> 31); }return sample;
}
- 0 < sample <= 0x7FFF:
- sample > 0x7FFF:
- -0x8000 <= sample < 0:
- sample < -0x8000:
转载于:https://www.cnblogs.com/speedracer/p/6928649.html
用位运算实现有符号16bit数据clamp相关推荐
- java 无符号运算_java位运算和无符号运算
计算机在底层使用的是二进制补码进行运算. 计算规则: 正数的原码.反码.补码是其二进制本身. 负数的原码首先计算其二进制数,然后最高位使用1表示负数,反码是最高位不变其它位取反,补码是在反码的基础上进 ...
- C语言位运算之有符号数和无符号数
相同长度数据类型位运算 #include<stdio.h> int main(int argc, int* argv[]){int a_int1 = 0xFFFFFFFF; //有符号数负 ...
- c语言编程中的或逻辑的符号 符号如何输入,C语言中逻辑运算符(,||,!)和位运算符号(,|,^)...
1. C语言中逻辑运算符(&&,||,!)和位运算符号(&,|,^)的区别 在C语言中,编程者经常混淆两组运算符:(&&,||,!)和(&,|,^).第 ...
- 位运算java_Java中的位运算
Java中的位运算,说实话,工作了两年的时间里,从来没有用过一次,因为平时都是些的是业务代码,很少接触比较底层的东西,我记得第一次在代码中看到还是在HashMap的Hash算法中看到的,这次重拾Jav ...
- 位运算(、|、^、~、>>、<<)
1.位运算概述 从现代计算机中所有的数据二进制的形式存储在设备中.即0.1两种状态,计算机对二进制数据进行的运算(+.-.*./)都是叫位运算,即将符号位共同参与运算的运算. 口说无凭,举一个简单的例 ...
- 嵌入式linux寄存器位运算,嵌入式linux C语言(一)――位运算的使用
嵌入式linux C语言(一)――位运算的使用 ARM是内存与IO统一编址,SoC中有很多控制寄存器,通过对这些寄存器进行位运算对这些控制寄存器进行设置,进而控制外设功能.在修改寄存器某些位的过程中不 ...
- c语言位运算负数的实例_巧妙运用C语言位运算
原标题:巧妙运用C语言位运算 位运算 位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果. 位运算符有: &(按位与) ...
- 一个C语言的基本教程—位运算篇
文章目录 13.从底层操纵数据--位运算篇 (1). 各种数据的存储方式 #1.无符号整型 #2.有符号整型 #3.字符型 #4.浮点型 (2). 什么是位运算 (3). 移位运算 (4). 位与.位 ...
- 位运算(、|、^、~、>>、<<)总结
目录 1.位运算概述 2.符号 3.常用的功能: 4.运用: 题目描述 输入描述 输出描述 1.位运算概述 从现代计算机中所有的数据二进制的形式存储在设备中.即 0.1 ...
最新文章
- CvBlobTrackerCC 多目标跟踪算法简析
- github上星星1万多的python教程推荐收藏
- 简单的五子棋操作用两种方法实现
- 【转】使用 lsof 查找打开的文件
- mysql增量脚本_mysql全量和增量备份脚本
- 【探索测试篇】探索无界,BUG无限,让程序猿头疼的测试技术
- linux那些事之 page table基本操作
- x86从实模式到保护模式 pdf_【自制操作系统04】从实模式到保护模式
- 同价位无敌?iQOO Neo配置曝光:骁龙845加持
- 小新 无法开机 联想_19年最“狠”轻薄本诞生 联想小新Pro 13优缺点一览
- 最新计算机主板参数,电脑主板参数知识
- cad字体安装_拿了CAD字体不知道怎么装?看过来
- RFID扫描APP Android
- C++学习第十课--构造函数详解、explicit与初始化列表笔记
- python实现图像二分类特异度(numpy)
- 酷酷资源社网站同款xiuno模板/知乎蓝魔改版源码/附多个插件
- math.h里的数学计算公式
- 1.3-15:苹果和虫子
- TCAM CAM 说明 原理 结构 Verilog 硬件实现
- qq邮箱html个签模板,qq邮箱个性签名模板
热门文章
- 用于最优控制的简单软件
- (转)API接口防止参数篡改和重放攻击
- 使用哪种关机方式后再启动计算机时间最长,有没有哪一种软件可以使电脑在设置好时间后自动开关机...
- 不使用输入框如何实现下拉_使用INFINITE AJAX SCROLL实现下拉加载效果
- 阶乘c 语言代码,求10000的阶乘(c语言代码实现)
- 拉取网页_用命令行管理你的 GitHub 项目,不必再开网页,官方 CLI 工具 1.0 版上线...
- python加密文件_用 Python 加密文件
- chart.js雷达图不显示刻度标签_Matplotlib从入门再也不放弃
- 小程序飞入购物车特效
- php相册上传和删除吗,php如何删除上传图片