久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python 中的 Elias Delta 編碼

 海擁 2022-03-31


語(yǔ)法:

Elias Delta Encoding(X)= Elias Gamma encoding (1+floor(log2(X)) + Binary representation of X without MSB.

分步實(shí)施

首先,在為 Elias Delta 編碼編寫(xiě)代碼之前,,我們將實(shí)現(xiàn) Elias delta 編碼,。

第1步:

  • 從數(shù)學(xué)庫(kù)導(dǎo)入 log,、floor 函數(shù)以執(zhí)行對(duì)數(shù)運(yùn)算。

  • 從用戶獲取輸入 k 以在 Elias Gamma 中進(jìn)行編碼,。

  • 使用數(shù)學(xué)模塊中的 floor 和 log 函數(shù),,找到 1+floor(log2(X) 并將其存儲(chǔ)在變量 N 中。

  • 使用 (N-1)*'0’+'1’ 找到 N 的一元編碼,,它為我們提供了一個(gè)二進(jìn)制字符串,,其中最低有效位為 '1’,其余最高有效位為 N-1 個(gè)’0’,。

示例: 某些值的 Elias Gamma 編碼

def EliasGammaEncode(k):
	if (k == 0):
		return '0'
	N = 1 + floor(log(k, 2))
	Unary = (N-1)*'0'+'1'
	return Unary + Binary_Representation_Without_MSB(k)

第2步:

  • 創(chuàng)建一個(gè)函數(shù),,該函數(shù)接受輸入 X 并給出結(jié)果作為 X 的二進(jìn)制表示,沒(méi)有 MSB,。

  • 使用“{0:b}”.format(k) 找到 k 的二進(jìn)制等效項(xiàng)并將其存儲(chǔ)在名為 binary 的變量中,。

    • 前綴零僅指定應(yīng)使用 format() 的哪個(gè)參數(shù)來(lái)填充 {}。

    • b 指定參數(shù)應(yīng)轉(zhuǎn)換為二進(jìn)制形式,。

  • 返回字符串 binary[1:],,它是 X 的二進(jìn)制表示,沒(méi)有 MSB,。

示例: 不帶 MSB 的二進(jìn)制表示

def Binary_Representation_Without_MSB(x):
	binary = "{0:b}".format(int(x))
	binary_without_MSB = binary[1:]
	return binary_without_MSB

現(xiàn)在我們要為 Elias Delta Encoding 編寫(xiě)代碼

第 3 步:

  • 從用戶獲取輸入 k 以在 Elias Delta 中進(jìn)行編碼,。

  • 使用數(shù)學(xué)模塊中的 floor 和 log 函數(shù),找到 1+floor(log2(k),。

  • 將 1+floor(log2(k) 的結(jié)果傳遞給 Elias Gamma 編碼函數(shù),。

示例:某些值的 Elias Delta 編碼

def EliasDeltaEncode(x):
	Gamma = EliasGammaEncode(1 + floor(log(k, 2)))
	binary_without_MSB = Binary_Representation_Without_MSB(k)
	return Gamma+binary_without_MSB


k = int(input('Enter a number to encode in Elias Delta: '))
print(EliasDeltaEncode(k))

第四步:

  • 得到不帶 MSB 的 k 的 Elias Gamma 編碼和二進(jìn)制表示的結(jié)果

  • 連接兩個(gè)結(jié)果并在控制臺(tái)上打印它們

為某些整數(shù)值生成 Elias Delta 編碼的完整代碼

from math import log
from math import floor

def Binary_Representation_Without_MSB(x):
	binary = "{0:b}".format(int(x))
	binary_without_MSB = binary[1:]
	return binary_without_MSB

def EliasGammaEncode(k):
	if (k == 0):
		return '0'
	N = 1 + floor(log(k, 2))
	Unary = (N-1)*'0'+'1'
	return Unary + Binary_Representation_Without_MSB(k)

def EliasDeltaEncode(x):
	Gamma = EliasGammaEncode(1 + floor(log(k, 2)))
	binary_without_MSB = Binary_Representation_Without_MSB(k)
	return Gamma+binary_without_MSB

k = 14
print(EliasDeltaEncode(k))

輸出:

00100110

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多