⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fix16.java

📁 一个J2ME的3D 一个J2ME的3D 一个J2ME的3D
💻 JAVA
字号:
/**
 * 
 */
package Math;

/**
 * @author PanXu
 * 定点数
 */
public class FIX16 {

	/**
	 * 
	 */
	public static final int FIX16_SHIFT = 16 ;
	public static final int FIX16_MAG = 65536 ;
	public static final int FIX16_FMASK = 0x0000ffff;
	public static final int FIX16_IMASK = 0xffff0000;
	public static final int FIX16_RUNG_UP = 0x00008000;
	
	public int Data ;
	public static long Temp ;
	
	public FIX16() {
		super();
		// TODO 自动生成构造函数存根
	}
	public FIX16(int n) {
		super();
		// TODO 自动生成构造函数存根
		this .Data = n << this .FIX16_SHIFT;
	}
	public FIX16(float n) {
		super();
		// TODO 自动生成构造函数存根
		this .Data = (int) (n * this .FIX16_MAG);
	}
	/*
	 * 转换
	 */
	public void INT_TO_FIX16 (int n){
		this .Data = n << this .FIX16_SHIFT;
	}
	public void FLOAT_TO_FIX16 (float n){
		this .Data = (int) (n * this .FIX16_MAG);
	}
	public int FIX16_TO_INT (){
		return (this .Data & this .FIX16_IMASK) >> this .FIX16_SHIFT;
	}
	public float FIX16_TO_FLOAT (){
		return ((float)this .Data / 65536.0f);
	}
	/*
	 * 运算
	 */
	//加法
	public FIX16 FIX16_ADD(FIX16 a , FIX16 b){
		FIX16 res = null ;
		res .Data = a .Data + b.Data;
		return res ;
	}
	public FIX16 FIX16_ADD_FORA (FIX16 a , FIX16 b){
		a.Data += b.Data;
		return a ;
	}
	
	//减法
	public FIX16 FIX16_SUB(FIX16 a , FIX16 b){
		FIX16 res = null ;
		res .Data = a .Data - b.Data;
		return res ;
	}
	public FIX16 FIX16_SUB_FORA (FIX16 a , FIX16 b){
		a.Data -= b.Data;
		return a ;
	}
	
	//乘法
	public FIX16 FIX16_MUL(FIX16 a , FIX16 b){
		FIX16 res = null;
		res .Data = (a.Data << 8) * (b.Data << 8);
		return res ;
	}
	public FIX16 FIX16_MUL_FORA(FIX16 a , FIX16 b){
		a.Data = (a.Data << 8) * (b.Data << 8);
		return a ;
	}
	/**
	 * 不同精度的乘法运算(数字表示定点数的位数)
	 * 结果返回给调用的对象
	 */
	/**
	 * 小数
	 */
	public int mulfix_16 (FIX16 a)
	{
		return this .Data * a .Data >> 16;
	}
	/**
	 * 1 - 2 
	 */
	public int mulfix_17 (FIX16 a)
	{
		return ((a.Data >> 1) * (this .Data >> 1)) >> 14;
	}
	/**
	 * 3 - 4 
	 */
	public int mulfix_18 (FIX16 a)
	{
		return ((a.Data >> 2) * (this.Data >> 2)) >> 12;
	}
	/**
	 * 5 - 8 
	 */
	public int mulfix_19 (FIX16 a)
	{
		return ((a.Data >> 3) * (this.Data >> 3)) >> 10;
	}
	/**
	 * 9 - 16 
	 */
	public int mulfix_20 (FIX16 a)
	{
		return ((a.Data >> 4) * (this.Data >> 4)) >> 8;
	}
	/**
	 *171 - 32
	 */
	public int mulfix_21 (FIX16 a)
	{
		return ((a.Data >> 5) * (this.Data >> 5)) >> 6;
	}
	/**
	 * 33 - 64 
	 */
	public int mulfix_22 (FIX16 a)
	{
		return ((a.Data >> 6) * (this.Data >> 6)) >> 4;
	}
	/**
	 * 65 - 128 
	 */
	public int mulfix_23 (FIX16 a)
	{
		return ((a.Data >> 7) * (this.Data >> 7)) >> 2;
	}
	/**
	 * 129 - 256 
	 */
	public int mulfix_24 (FIX16 a)
	{
		return (a.Data >> 8) * (this.Data >> 8);
	}
	/**
	 * 257 - 512 
	 */
	public int mulfix_25 (FIX16 a)
	{
		this .Temp = (a.Data * this .Data) ;
		return (int) (this .Temp >> 16) ;
	}
	/**
	 * 513 - 1024 
	 */
	public int mulfix_26 (FIX16 a)
	{
		this .Temp = (a.Data * this .Data) ;
		return (int) (this .Temp >> 16) ;
	}
	/**
	 * 1025 - 2048 
	 */
	public int mulfix_27 (FIX16 a)
	{
		this .Temp = (a.Data * this .Data) ;
		return (int) (this .Temp >> 16) ;
	}
	/**
	 * 2059 - 4096 
	 */
	public int mulfix_28 (FIX16 a)
	{
		this .Temp = (a.Data * this .Data) ;
		return (int) (this .Temp >> 16) ;
	}
	/**
	 * 4097 -  max
	 */
	public int mulfix_29 (FIX16 a)
	{
		this .Temp = (a.Data * this .Data) ;
		return (int) (this .Temp >> 16) ;
	}
	public int mulfix_30 (FIX16 a)
	{
		this .Temp = (a.Data * this .Data) ;
		return (int) (this .Temp >> 16) ;
	}
	public int mulfix_31 (FIX16 a)
	{
		this .Temp = (a.Data * this .Data) ;
		return (int) (this .Temp >> 16) ;
	}
	public int mulfix_32 (FIX16 a)
	{
		this .Temp = (a.Data * this .Data) ;
		return (int) (this .Temp >> 16) ;
	}
	
	//除法
	public FIX16 FIX16_DIV (FIX16 a , FIX16 b){
		FIX16 res = null;
		res.Data = (a.Data << this.FIX16_SHIFT) / b.Data;
		return res ;
	}
	public FIX16 FIX16_DIV_FORA (FIX16 a , FIX16 b)	{
		a.Data = (a.Data << this.FIX16_SHIFT) / b.Data;
		return a ;
	}
	/**
	 * 不同精度的乘法运算(数字表示定点数的位数)
	 * 结果返回给调用的对象
	 */
	/**
	 * 
	 */
	public int divfix_16 (FIX16 a)
	{
		return (this .Data << 16) / a .Data ;
	}
	
	public int divfix_17 (FIX16 a)
	{
		return (this .Data << 15) / (a .Data >> 1) ;
	}
	
	public int divfix_18 (FIX16 a)
	{
		return (this .Data << 14) / (a .Data >> 2) ;
	}
	
	public int divfix_19 (FIX16 a)
	{
		return (this .Data << 13) / (a .Data >> 3) ;
	}
	
	public int divfix_20 (FIX16 a)
	{
		return (this .Data << 12) / (a .Data >> 4) ;
	}
	
	public int divfix_21 (FIX16 a)
	{
		return (this .Data << 11) / (a .Data >> 5) ;
	}
	
	public int divfix_22 (FIX16 a)
	{
		return (this .Data << 10) / (a .Data >> 6) ;
	}
	
	public int divfix_23 (FIX16 a)
	{
		return (this .Data << 9) / (a .Data >> 7) ;
	}
	
	public int divfix_24 (FIX16 a)
	{
		return (this .Data << 8) / (a .Data >> 8) ;
	}
	
	public int divfix_25 (FIX16 a)
	{
		Temp = (this .Data << 16);
		return (int) (Temp / a.Data) ;
	}
	
	public int divfix_26 (FIX16 a)
	{
		Temp = (this .Data << 16);
		return (int) (Temp / a.Data) ;
	}
	public int divfix_27 (FIX16 a)
	{
		Temp = (this .Data << 16);
		return (int) (Temp / a.Data) ;
	}
	
	public int divfix_28 (FIX16 a)
	{
		Temp = (this .Data << 16);
		return (int) (Temp / a.Data) ;
	}
	
	public int divfix_29 (FIX16 a)
	{
		Temp = (this .Data << 16);
		return (int) (Temp / a.Data) ;
	}
	
	public int divfix_30 (FIX16 a)
	{
		Temp = (this .Data << 16);
		return (int) (Temp / a.Data) ;
	}
	
	public int divfix_31 (FIX16 a)
	{
		Temp = (this .Data << 16);
		return (int) (Temp / a.Data) ;
	}
	
	public int divfix_32 (FIX16 a)
	{
		Temp = (this .Data << 16);
		return (int) (Temp / a.Data) ;
	}
}	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -